我很好奇 AppleScript 是否可以访问浏览器中的每个特定选项卡并在其中执行一些 javascript。
有人有想法吗?
我很好奇 AppleScript 是否可以访问浏览器中的每个特定选项卡并在其中执行一些 javascript。
有人有想法吗?
对于Google Chrome,使用execute
AppleScript Chromium Suite:
执行 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
对于其他浏览器,请检查File -> Open Dictionary
AppleScript 编辑器上的功能。
下面的函数在 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"; }
execute JavaScript
由于 2018 年发布了某些版本的 Chrome,因此在运行命令时默认显示如下错误:
78:98:执行错误:Google Chrome 出现错误:通过 AppleScript 执行 JavaScript 已关闭。要打开它,请从菜单栏中转到查看 > 开发人员 > 允许来自 Apple 事件的 JavaScript。欲了解更多信息:https ://support.google.com/chrome/?p=applescript (12)
Safari 在“开发 > 允许来自 Apple 事件的 JavaScript”中具有类似的偏好,该偏好在 macOS 版本 10.11.5(2016 年 5 月 16 日发布)中默认关闭。
最近 Google Chrome 禁用了通过 AppleScript 执行 JavaScript 的功能。我无法找到参考链接,但在 Chrome Canary v59 中它不起作用并给出一条消息说它已被禁用,而且我看到它在 Chrome v57 中仍然有效,所以它必须是非常新的。