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

mix*_*mix 7 javascript macos applescript dom

我想弄清楚为什么我的Applescript在Safari位置栏中输入相同的javascript代码时无效.

转到搜索结果页,例如:http://www.google.com/search?q = test.要获得正确的行为,请在位置栏中输入此内容并按Enter键:

javascript: document.getElementsByClassName('vspib')[0].click();
Run Code Online (Sandbox Code Playgroud)

您将看到它为第一个搜索结果选择放大镜.

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

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

但是,它什么也没做.有任何想法吗?

sak*_*kra 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
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢.由于某种原因,你的代码每次都不适合我,但是这个修改最终做了诀窍:执行前窗的活动选项卡javascript"document.getElementsByClassName('vspib')[0] .click();" (3认同)