AppleScript可以访问浏览器选项卡并在其中执行javascript吗?

时间:2011-02-27 20:13:29

标签: javascript google-chrome safari applescript applescript-objc

我很好奇AppleScript是否可以访问浏览器中的每个特定选项卡并在其中执行一些javascript。

有人有想法吗?

3 个答案:

答案 0 :(得分:31)

对于 Google Chrome ,请使用AppleScript Chromium Suite中的execute

  

执行 v:执行一段javascript。

     

执行 说明符:执行命令的选项卡。

     

javascript text :要执行的javascript代码。

示例:

tell application "Google Chrome"
    execute front window's active tab javascript "alert('example');"
end tell

可以在 Safari 中完成:

tell application "Safari" to do JavaScript "alert('example')" in document 1

对于其他浏览器,请检查AppleScript编辑器上File -> Open Dictionary处的功能。

答案 1 :(得分:0)

最近Google Chrome禁用了通过AppleScript执行JavaScript的功能。我在查找引用链接时遇到了问题,但在Chrome Canary v59中它无法正常工作并发出消息说它已被禁用,而且我发现它仍然可以在Chrome v57中运行,因此它必须非常新。

答案 2 :(得分:0)

下面的函数在Chrome最前面的窗口的每个选项卡中运行JavaScript并连接输出。要在所有窗口中运行JavaScript,请将window 1替换为windows

xjss(){ osascript -e'on run {a}
    set o to ""
    tell app "Google Chrome" to repeat with t in (get tabs of window 1)
        tell t to set o to o & (execute JavaScript a) & linefeed
    end
end' -- "$1"; }

这仅在最前面的选项卡中运行JavaScript:

xjs(){ osascript -e'on run {a}
    tell app "Google Chrome" to tell active tab of window 1 to execute JavaScript a
end' -- "$1"; }

以下是Safari的类似功能:

sjss(){ osascript -e'on run {a}
    set o to ""
    tell app "Safari" to repeat with t in (get tabs of window 1)
        tell t to set o to o & (do JavaScript a) & linefeed
    end
end' -- "$1"; }

sjs(){ osascript -e'on run {a}
    tell app "Safari" to tell document 1 to do JavaScript a
end' -- "$1"; }

自2018年发布某些版本的Chrome以来,运行execute JavaScript命令时默认显示如下错误:

  

78:98:执行错误:Google Chrome出现错误:通过AppleScript执行JavaScript已关闭。要启用它,请从菜单栏中转到“视图”>“开发人员”>“允许来自Apple Events的JavaScript”。有关更多信息:https://support.google.com/chrome/?p=applescript(12)

Safari在“开发>允许来自Apple Events的JavaScript”中具有类似的首选项,默认情况下,macOS 10.11.5版(于2016-05-16中发布)已将Safari关闭。