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已关闭。要打开它,请从菜单栏中转到View > Developer > Allow JavaScript from Apple Events。更多信息:中文(简体) Safari在“Develop > Allow JavaScript from Apple Events”中有类似的首选项,在macOS 10.11.5版本(2016-05-16发布)中默认关闭。
property P_JAVA_SCRIPT : "/Users/username/Desktop/myscript.js"
tell application "Firefox"
activate
tell application "System Events" to tell process "Firefox"
set the clipboard to (read P_JAVA_SCRIPT)
keystroke "k" using {command down, option down} -- open console
delay 1
keystroke "v" using {command down} -- paste clipboard
keystroke return
delay 3
keystroke "i" using {command down, option down} -- close dev tools
end tell
end tell
如果你想从JavaScript中获取返回值,那就麻烦多了! 在我的例子中,我在关闭开发工具之前使用了这个:set returnString to value of static text 1 of group 2 of group 2 of group 1 of group 1 of group 1 of UI element 1 of scroll area 1 of group 1 of group 1 of UI element 1 of scroll area 2 of group 1 of group 1 of group 1 of window 1 我使用了UI Browser.app,不幸的是不再维护。
4条答案
按热度按时间u1ehiz5o1#
对于Google Chrome,请使用AppleScript Chromium Suite中的
execute
:execute v:执行一段javascript。
执行说明符 :要在其中执行命令的选项卡。
javascripttext:要执行的JavaScript代码。
示例:
可以在Safari中执行以下操作:
对于其他浏览器,请在AppleScript编辑器上检查
File -> Open Dictionary
处的函数。5hcedyr02#
下面的函数在Chrome最前面窗口的每个选项卡中运行JavaScript并连接输出。要在所有窗口中运行JavaScript,请将
window 1
替换为windows
。这只在最前面的标签中运行JavaScript:
以下是Safari的类似功能:
自2018年发布的某些版本的Chrome以来,在运行
execute JavaScript
命令时,默认情况下会显示这样的错误:78:98:执行错误:Google Chrome出现错误:通过AppleScript执行JavaScript已关闭。要打开它,请从菜单栏中转到View > Developer > Allow JavaScript from Apple Events。更多信息:中文(简体)
Safari在“Develop > Allow JavaScript from Apple Events”中有类似的首选项,在macOS 10.11.5版本(2016-05-16发布)中默认关闭。
e37o9pze3#
最近,Google Chrome禁用了通过AppleScript执行JavaScript的功能。我很难找到一个参考链接,但在Chrome Canary v59中它不工作,并给出一条消息说它被禁用,我看到它在Chrome v57中仍然工作,所以它必须是非常新的。
oaxa6hgo4#
你也可以在控制台中粘贴一些Javascript,我在Firefox上得到了这个。
如果你想从JavaScript中获取返回值,那就麻烦多了!
在我的例子中,我在关闭开发工具之前使用了这个:
set returnString to value of static text 1 of group 2 of group 2 of group 1 of group 1 of group 1 of UI element 1 of scroll area 1 of group 1 of group 1 of UI element 1 of scroll area 2 of group 1 of group 1 of group 1 of window 1
我使用了UI Browser.app,不幸的是不再维护。