Может ли AppleScript получать доступ к вкладкам браузера и выполнять в них JavaScript? - PullRequest
14 голосов
/ 27 февраля 2011

Мне любопытно, сможет ли AppleScript получить доступ к каждой конкретной вкладке в браузере и выполнить в ней какой-то javascript.

У кого-нибудь есть идеи?

Ответы [ 3 ]

32 голосов
/ 28 февраля 2011

Для Google Chrome , используйте execute из AppleScript Chromium Suite:

execute v: выполнить фрагмент JavaScript.

выполнить спецификатор : вкладка для выполнения команды.

javascript текст :Код 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.

0 голосов
/ 06 января 2019

Функция ниже запускает JavaScript на каждой вкладке самого переднего окна в Chrome и объединяет выходные данные.Чтобы запустить 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"; }

Поскольку некоторые версии Chrome выпущены в 2018 году, при запуске команды execute JavaScript по умолчанию отображается ошибка, подобная этой:

78: 98: ошибка выполнения: Google Chrome получил ошибку: выполнение JavaScript через AppleScript отключено.Чтобы включить его, в строке меню перейдите в «Вид»> «Разработчик»> «Разрешить JavaScript из событий Apple».Для получения дополнительной информации: https://support.google.com/chrome/?p=applescript (12)

Safari имеет аналогичное предпочтение в «Разработка> Разрешить JavaScript из событий Apple», которое было отключено по умолчанию в macOS версии 10.11.5 (выпущено в 2016-05-16).

0 голосов
/ 28 марта 2017

Недавно Google Chrome отключил возможность выполнения JavaScript через AppleScript. У меня проблемы с поиском ссылочной ссылки, но в Chrome Canary v59 она не работает и выдает сообщение о том, что она отключена, и я вижу, что она по-прежнему работает в Chrome v57, поэтому она должна быть очень новой.

...