19

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

有人有想法吗?

4

3 回答 3

41

对于Google Chrome,使用executeAppleScript 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 DictionaryAppleScript 编辑器上的功能。

于 2011-02-28T20:13:23.640 回答
1

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

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 日发布)中默认关闭。

于 2019-01-06T13:25:25.147 回答
0

最近 Google Chrome 禁用了通过 AppleScript 执行 JavaScript 的功能。我无法找到参考链接,但在 Chrome Canary v59 中它不起作用并给出一条消息说它已被禁用,而且我看到它在 Chrome v57 中仍然有效,所以它必须是非常新的。

于 2017-03-28T17:40:55.280 回答