Can AppleScript access browser tabs and execute javascript in them? Can AppleScript access browser tabs and execute javascript in them? google-chrome google-chrome

Can AppleScript access browser tabs and execute javascript in them?


For Google Chrome, use execute from AppleScript Chromium Suite:

execute v : Execute a piece of javascript.

execute specifier : The tab to execute the command in.

javascript text : The javascript code to execute.

Example:

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

Can be done in Safari either:

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

For other browsers, check the functions at File -> Open Dictionary on AppleScript editor.


The function below runs JavaScript in each tab of the frontmost window in Chrome and concatenates the output. To run JavaScript in in all windows, replace window 1 with 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    endend' -- "$1"; }

This runs JavaScript in only the frontmost tab:

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

Here are similar functions for 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    endend' -- "$1"; }sjs(){ osascript -e'on run {a}    tell app "Safari" to tell document 1 to do JavaScript aend' -- "$1"; }

Since some version of Chrome released in 2018, an error like this is shown by default when running an execute JavaScript command:

78:98: execution error: Google Chrome got an error: Executing JavaScript through AppleScript is turned off. To turn it on, from the menu bar, go to View > Developer > Allow JavaScript from Apple Events. For more information: https://support.google.com/chrome/?p=applescript (12)

Safari has a similar preference in "Develop > Allow JavaScript from Apple Events" which was turned off by default in macOS version 10.11.5 (released in 2016-05-16).


Recently Google Chrome disabled the ability to execute JavaScript via AppleScript. I'm having trouble finding a reference link, but in Chrome Canary v59 it doesn't work and gives a message saying it's disabled, and I'm seeing it still work in Chrome v57 so it's got to be very new.