当在浏览器中输入相同的代码时,为什么不在Applescript中执行'javascript'调用呢?

时间:2011-07-03 06:29:19

标签: javascript macos dom applescript

我正在试图找出为什么我的Applescript在Safari位置栏中输入相同的javascript代码时无效。

转到搜索结果页面,例如:http://www.google.com/search?q=test。要获得正确的行为,请将其输入位置栏并按Enter:

javascript: document.getElementsByClassName('vspib')[0].click();

您会看到它为第一个搜索结果选择了放大镜。

这是我想通过javascript发生的事情。所以我输入了以下内容:

tell application "Safari"
    activate
    do JavaScript "document.getElementsByClassName('vspib')[0].click();" in document 1
end tell

然而,它什么也没做。有什么想法吗?

1 个答案:

答案 0 :(得分:16)

问题是do JavaScript必须正确处理Safari窗口中的选项卡。

如果搜索结果页面是最前面的Safari窗口中的当前选项卡,则以下脚本适用于我:

tell application "Safari"
    activate
    set theScript to "document.getElementsByClassName('vspib')[0].click();"
    do JavaScript theScript in current tab of first window
end tell