我很好奇AppleScript是否可以访问浏览器中的每个特定选项卡并在其中执行一些javascript。
有人有想法吗?
答案 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关闭。