You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apple Automator变量传JavaScript报错:找不到jsScript求解决

问题描述

尝试将Apple Automator生成的变量列表传入JavaScript,但运行时出现找不到变量jsScript的错误,当前代码如下:

function run(input, parameters) {
    var safari = Application("Safari");
    safari.includeStandardAdditions = true;
    
    var jsScript ="jsScript += document.getElementById('search-name').value = '"
    + input[0] + input[1]
    + "';";
    "jsScript += document.getElementById('search-location').value = '"
    + input[2] + input[4]
    + "';";
    jsScript += "document.getElementById('wp-search').click();";
    
    safari.doJavaScript(jsScript, { in:safari.windows[0].currentTab});

    return jsScript;
}

错误原因与修复方案
  • 错误根源:

    1. 初始化jsScript时,字符串开头多写了jsScript += ,导致生成的JS代码本身存在语法错误
    2. 第二行DOM操作代码仅写了字符串字面量,未执行jsScript += 赋值操作,这部分代码完全没有被加入到变量中,后续拼接逻辑因此失效
  • 修复步骤:

    1. 移除初始字符串里多余的jsScript += ,直接从DOM操作代码开始拼接
    2. 给第二行字符串加上jsScript += 赋值操作,确保代码片段被正确加入变量
    3. 可选:处理输入内容中的单引号,避免拼接后JS语法报错

修正后的代码
function run(input, parameters) {
    var safari = Application("Safari");
    safari.includeStandardAdditions = true;
    
    var jsScript = "document.getElementById('search-name').value = '"
    + input[0] + input[1]
    + "';";
    jsScript += "document.getElementById('search-location').value = '"
    + input[2] + input[4]
    + "';";
    jsScript += "document.getElementById('wp-search').click();";
    
    safari.doJavaScript(jsScript, { in: safari.windows[0].currentTab });

    return jsScript;
}

额外优化建议

如果input中的内容可能包含单引号,直接拼接会触发JS语法错误,可添加转义处理,同时用模板字符串提升代码可读性:

function run(input, parameters) {
    var safari = Application("Safari");
    safari.includeStandardAdditions = true;
    
    // 转义输入内容中的单引号
    var nameValue = (input[0] + input[1]).replace(/'/g, "\\'");
    var locationValue = (input[2] + input[4]).replace(/'/g, "\\'");
    
    // 用模板字符串拼接代码,更易维护
    var jsScript = `
        document.getElementById('search-name').value = '${nameValue}';
        document.getElementById('search-location').value = '${locationValue}';
        document.getElementById('wp-search').click();
    `;
    
    safari.doJavaScript(jsScript, { in: safari.windows[0].currentTab });

    return jsScript;
}

内容的提问来源于stack exchange,提问作者funnysquid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 04:55:29