首页 > 解决方案 > applescript document.querySelectorAll('input[name$=_comment1]'); 中的 Javascript

问题描述

我正在尝试用从对话查询中获得的数字填充 Safari 中名称以 _comment1 结尾的所有文本字段。

文本字段的源代码如下所示:

<input type="text" maxlength="6" size="6" name="233941_142117_comment1" value="" onKeyUp="return autoTab (this, 6, event);" onChange="disableButtons();">

但它并没有填满这些字段。有任何想法吗?

我的小程序是:

set query to text returned of (display dialog "Enter Query" default answer "" buttons {"Input", "Cancel"} default button 1)
log "2"
activate application "Safari"
log "3"
tell application "Safari"


log "4"
do JavaScript "

    let x = document.querySelectorAll('input[name$=_comment1]');
    var i;
    for (i = 0; i < x.length; i++) {
        x[i].value = query;
     }

"

结束告诉

标签: javascriptsafariapplescript

解决方案


我在您的问题下方留下的评论中概述了您的脚本存在的问题。总结一下:

① 您的query变量被定义为 AppleScript 变量,但未被使用。然后在 JavaScript 中引用一个名为 的变量,该变量query未定义且没有任何值。

② 您的命令在Safarido JavaScript中没有目标,需要对特定选项卡或文档执行操作。

解决方案:

在没有看到您正在使用的特定站点的情况下,我无法测试我的解决方案,但我非常有信心它应该纠正这两个最肯定会阻止您的脚本工作的显式错误。是否出现任何其他不相关的问题取决于网站的具体情况。

所以你已经定义了你的 AppleScript 变量query,我将在这里懒惰地做:

    set query to "blah blah blah"

需要修改的脚本的核心部分在这里:

    tell application "Safari" to tell ¬
        the front document to do JavaScript ¬
        "x=document.querySelectorAll(\"input[name$='_comment1']\"); " & ¬
        "for(let i of x){ i.value=" & quoted form of query & "; }"

你的 JavaScript 本身完全没问题(尽管我根据自己的喜好稍微修改了它,我可能不应该这样做)。这里的要点是我已经告诉Safari它将在front document;中执行 JavaScript。并且 JavaScript 现在使用 AppleScriptquery变量来设置<input>字段的值。

在我发现的某个任意网站上测试了它的变体后,它似乎很成功。

让我知道结果如何。


推荐阅读