Allow javascript from apple events

Allow Javascript from Apple Events will not activate

On 10.12.6, selecting Allow Javascript from Apple Events from the Develop menu does not stick.

Steps to reproduce-

  1. Develop menu > Allow Javascript from Apple Events
  2. Click «Allow» in the dialog box.

Result: Develop menu shows the setting UNchecked.

Tested with defaults read shows it is enabled (1).

Writing defaults completes without error.

Tested in different user account.

Tested with Safari beta 11.1.1, and Technology Preview

Answers

I have this issue too. (Running 10.13.5)

ps: «defaults write -app Safari AllowJavaScriptFromAppleEvents 1» does not help!

Any solutions out there?

I found the solution on Github

step 1 enable virtual keyboard for controls

If you haven’t already, you’ll need to open System Preferences > Keyboard > Shortcuts and change the Full Keyboard Access setting to All controls.

step 2 with virtual keyboard fully enabled

Select the «Allow JavaScript from Apple Events» from Develop menu option in Safari as normal.

When You get the prompt «Are you sure you want to allow JavaScript from Apple Events?» don’t click «Allow» with mouse, but press space bar (press this button by keyboard) and then a magic window asking for a password will appear.

Thank you! You saved my bacon!

The virtual keyboard thing did not work for me. Then I realised I was accessing our file server third Remote Desktop and directly on the computer. Plugging in a keyboard and mouse to the Server allowed my to turn on JavaScript Apple Events in Safari and set the password.

However, you can’t always do this, so the next best thing is use an accessbility scripting feature and have the machine think a user is doing the clicks, allowing you to set the password:

— The delays can be shorter, coordinates may vary

— Best way to get the coordinates is with Apple screen capture (command-shift-4) from upper right to lower left

— if one spends the time, the click events can be converted to Accessibility AppleScript objects by capturing them as variables, or checking the events and using the events instead of the click coordinates

tell application «System Events»

tell application «Safari»

activate

end tell

delay 1

— click develop menu (make sure its on first)

click at

delay 1

— click Allow Javascript menu from Apple Events

Источник

Allow JavaScript from Apple Events in Safari through Terminal Mac

I’m writing a program that executes do javascript in Safari. The only problem is that I’m trying to make the app give its self permission to do it. I’m trying to locate the file that handles the Safari developer preferences so that I can do this. Does anyone have any idea where this might be or how to change these settings?

Читайте также:  Palo alto apple store

2 Answers 2

It’s in Safari’s preferences plist at

/Library/Preferences/com.apple.Safari.plist . The key you want is AllowJavaScriptFromAppleEvents . You can set it using defaults :

The virtual keyboard thing did not work for me. As StarPlayr at apple’s develepoer forum has found out the problem is in something else. For me problem occurred when i tried to do that on remote mac. For some people plugging in a keyboard and mouse to the Server allowed to turn on JavaScript Apple Events in Safari and set the password.

However, for me that wasn’t an option, so the next best thing is use an accessbility scripting feature and have the machine think a user is doing the clicks, allowing you to set the password:

— The delays can be shorter, coordinates may vary

— Best way to get the coordinates is with Apple screen capture (command-shift-3) from upper right to lower left (the coordinates will be shown)

— if one spends the time, the click events can be converted to Accessibility AppleScript objects by capturing them as variables, or checking the events and using the events instead of the click coordinates

Источник

macOS Sierra — how to enable «Allow Remote Automation» using command line

I am working on an automation stuff in macOS Sierra (10.12.2). By using python’s atomac support I can launch the safari browser and make the settings enabled via Safari -> Preferences -> Advanced -> check «enable Develop Menu» and then select «Develop -> Allow Remote Automation». Looks like this is not so consistent for automation perspective. I would like to know if there is any shell command to make this possible.

2 Answers 2

Hmm ok, so as per my comment:

You could do defaults write com.apple.Safari IncludeDevelopMenu YES to activate the development menu via terminal. You could get python to execute this command for you using the subprocess module.

According to this this question it seems that one used to be able to simply do defaults write com.apple.Safari AllowRemoteAutomation 1 . However, since Safari 10 this option has apparently been subjected to a higher security protocol or something (maybe because of the System Integrity Protection that was introduced). I’ve been looking for the plistfile that now holds the setting, but I have not been able to find it. Maybe it’s not even there in an actual plistfile anymore.

I guess this leaves you with 2 options:

  1. Use apple’s osascript to simulate the needed mouseclicks.
  2. Repost your question on AskDifferent or Apple’s own developers forum, since you are more likely to find someone with in-depth knowledge of macOS.

Источник

Allow JavaScript from Apple Events in Safari through Terminal Mac

Question or issue on macOS:

I’m writing a program that executes do javascript in Safari. The only problem is that I’m trying to make the app give its self permission to do it. I’m trying to locate the file that handles the Safari developer preferences so that I can do this. Does anyone have any idea where this might be or how to change these settings?

Читайте также:  Как найти андроид с помощью iphone

How to solve this problem?

Solution no. 1:

It’s in Safari’s preferences plist at

/Library/Preferences/com.apple.Safari.plist . The key you want is AllowJavaScriptFromAppleEvents . You can set it using defaults :

Solution no. 2:

The virtual keyboard thing did not work for me. As StarPlayr at apple’s develepoer forum has found out the problem is in something else.
For me problem occurred when i tried to do that on remote mac.
For some people plugging in a keyboard and mouse to the Server allowed to turn on JavaScript Apple Events in Safari and set the password.

However, for me that wasn’t an option, so the next best thing is use an accessbility scripting feature and have the machine think a user is doing the clicks, allowing you to set the password:

— The delays can be shorter, coordinates may vary

— Best way to get the coordinates is with Apple screen capture (command-shift-3) from upper right to lower left (the coordinates will be shown)

— if one spends the time, the click events can be converted to Accessibility AppleScript objects by capturing them as variables, or checking the events and using the events instead of the click coordinates

Источник

Действие «Выполнить код JavaScript на веб-странице» в Быстрых командах на iPhone или iPad

Почти на всех веб-страницах используется JavaScript — язык программирования, который позволяет создавать динамические эффекты в веб-браузерах, включая анимации, интерактивные меню, воспроизведение видео и т. п. Обычно код JavaScript не отображается на экране при просмотре веб-сайтов. Однако, создав быструю команду с действием «Выполнить код JavaScript на веб-странице» и запустив эту команду из приложения Safari, можно управлять кодом JavaScript на веб-странице.

Быстрые команды, которые запускают пользовательский код JavaScript на веб-странице, очень широко используются. Можно создать быстрые команды, которые получают определенные данные с веб-страницы и затем передают эти данные в задачу: например, можно получить расписание уроков и добавить его в Календарь или экспортировать список членов группы в социальной сети и вставить эти данные в электронную таблицу.

Также можно создать быстрые команды, которые дают возможность модифицировать веб-страницу — например, менять шрифт текста или скорость воспроизведения видео на ней. Чтобы выполнять код JavaScript из быстрой команды, необходимо включить соответствующую настройку. См. Дополнительные настройки конфиденциальности и безопасности в Быстрых командах на iPhone и iPad.

Информацию об использовании быстрых команд, которые выполняют код JavaScript на веб-странице, см. в разделе Использование действия «Выполнить код JavaScript на веб-странице» в Быстрых командах на iPhone или iPad.

О получении данных с веб-страниц

Действие «Выполнить код JavaScript на веб-странице» позволяет получать данные с веб-страницы, захватывая все элементы, которые соответствуют определенным критериям, и затем обрабатывая эти элементы в соотвествии с заданием (или передавая их дальше).

Например, чтобы создать список всех изображений на веб-странице, используйте код:

var elements = document.querySelectorAll(«img»);

В другом примере, чтобы получить все объекты класса «post», используйте код:

var elements = document.querySelectorAll(«.post»);

После создания списка NodeList можно переходить между его элементами (для дополнительного отбора элементов или добавления их в структуру данных) с помощью следующего кода:

Входные данные для действия «Выполнить код JavaScript на веб-странице»

Действию «Выполнить код JavaScript на веб-странице» в качестве входных данных должна передаваться активная веб-страница Safari. Эту быструю команду необходимо со страницы экспорта (а именно, из Safari, SFSafariViewController или ASWebAuthenticationSession).

Читайте также:  Чем отличается арабский айфон от русского

Когда быстрая команда запускается со страницы экспорта, входные данные из приложения Safari передаются в первое действие Вашей быстрой команды.

Хотя входные данные для действия «Выполнить код JavaScript на веб-странице» должны представлять собой веб-страницу Safari, в действие можно вставить дополнительные данные, используя волшебные переменные. Например, быстрая команда Изменить скорость видео (доступная в Галерее) содержит действие «Запустить JavaScript на веб‑странице», которое вносит изменения в видео на веб‑странице. Скорость воспроизведения видео контролируется переменной Speed.

Информацию о запуске быстрых команд из Safari см. в разделе Запуск быстрой команды из другого приложения на iPhone или iPad.

Выходные данные для действия «Выполнить код JavaScript на веб-странице»

Чтобы получить данные в результате, нужно вызвать обработчик завершения в JavaScript, например completion(result) . Поскольку JavaScript обычно используется с асинхронными шаблонами, вызов также является асинхронным. Это дает возможность несинхронно завершить действие. Пример кода:

Выходные данные для действия «Выполнить код JavaScript на веб-странице» могут быть любым типом данных JSON, в том числе:

логическое значение (истина или ложь)

массив Array (содержащий любой другой тип JSON)

словарь (содержащий любой другой тип JSON)

нулевое значение (null)

неопределенное значение (undefined)

Приложение «Быстрые команды» автоматически кодирует и декодирует возвращаемое значение для обеспечения корректной передачи данных между JavaScript и приложением «Быстрые команды». Это означает, что Вам не нужно выполнять вызов JSON.stringify(result) перед вызовом обработчика завершения.

Поскольку возвращенное значение является типом данных JSON, некоторые возвращенные значения могут не сработать. Например, функция или узел Node при кодировании в JSON могут не дать хорошего результата. В таком случае рекомендуется создать массив или словарь, который содержит нужные Вам значения, совместимые с JSON.

Примечание. Объект в JavaScript является просто словарем, поэтому базовые объекты хорошо конвертируются в типы данных JSON.

Если не нужно возвращать никакие данные от действия «Выполнить код JavaScript на веб-странице», можно вызвать completion() без аргумента в функции (так как поддерживаются выходные данные типа undefined ). Это аналогично вызову функции completion(undefined) .

Ограничение по времени для действия «Выполнить код JavaScript на веб-странице»

Так же как и любое другое расширение JavaScript для Safari, действие «Выполнить код JavaScript на веб-странице» имеет ограничение по времени и должно быть завершено как можно быстрее. Код JavaScript, использующий синхронные функции, может не завершиться вовремя. Примеры синхронных функций:

Время ожидания продолжительностью в несколько секунд — например: window.setTimeout(function() < completion(); >, 5000);

Если Ваш код JavaScript превысит допускаемое время ожидания, быструю команду не удастся завершить, и в ходе ее выполнения отобразится сообщение об ошибке «Истекло время ожидания JavaScript».

Обработка синтаксических ошибок и ошибок при выполнении

Для написания кода JavaScript в действии «Выполнить код JavaScript на веб-странице» можно использовать любой синтаксис, который поддерживается в Safari.

В приложении «Быстрые команды» действие «Выполнить код JavaScript на веб-странице» позволяет проверить синтаксис, чтобы обнаружить грубые ошибки еще до запуска быстрой команды из расширения Safari.

При вводе скрипта в текстовое поле синтаксические подсказки помогают убедиться, что в коде JavaScript нет ошибок. Например, если не хватает кавычек в конце строки, весь последующий текст после этой строки будет выделен.

Источник

Оцените статью