javascript - 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;
}
"
结束告诉
解决方案
我在您的问题下方留下的评论中概述了您的脚本存在的问题。总结一下:
① 您的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>
字段的值。
在我发现的某个任意网站上测试了它的变体后,它似乎很成功。
让我知道结果如何。
推荐阅读
- android - Vuforia 跟踪适用于编辑器,但不适用于 Android 设备
- python - 如何从 Pandas/Python 中的日志数据描述中删除日志 ID
- python - 成员函数的局部常量
- sql - 如何在连接字符串中包含®注册符号
- javascript - 如何模拟按下 END 键
- python - Mitmproxy 重定向在 python (Raspberry Pi) 中不起作用
- c - 没有连接到网络(AF_ROUTE)时没有这样的过程(3)
- python - 加载以前保存的答案 Tkinter OptionMenu
- algorithm - 数据结构遍历
- asp.net-mvc - 以编程方式多选分组 - MVC