![](https://help.apple.com/assets/5E8CEA35094622DF10489984/5E8CEA42094622DF1048998D/uk_UA/c10e8a839dc838a25d0feb0e9e428a0a.png)
Вступ до дії «Запустити JavaScript на веб-сторінці» у Швидких командах
Ледь не всі веб-сторінки скриптуються за допомогою JavaScript, мови програмування, що створює динамічні ефекти у веб-браузерах, зокрема анімації, інтерактивні меню, відтворенням відео тощо. Зазвичай ви не бачите JavaScript, коли переглядаєте веб-сайт. Утім, побудувавши швидку команду, що містить дію «Запустити JavaScript на веб-сторінці», і згодом запустивши таку швидку команду в програмі Safari, ви можете керувати JavaScript будь-якої веб-сторінки.
Швидкі команди, що виконують ваші сценарії JavaScript на веб-сторінці, мають безліч застосувань. Наприклад, ви можете створювати швидкі команди, що видобувають конкретні дані з веб-сторінки й потім включають такі дані в якесь завдання, як-от виокремлення розкладу якогось заняття та його додання до програми «Календар» або експортування даних учасників групи в соціальній мережі та подальше додання таких даних до електронної таблиці.
Ви також можете створювати швидкі команди, що дозволяють вам модифікувати веб-сторінку, наприклад, змінити шрифт тексту такої веб-сторінки або швидкість, з якою відтворюється якесь її відео.
Інформацію щодо використання швидких команд, що запускають JavaScript на веб-сторінці, див. у Дія «Запустити JavaScript на веб-сторінці» у Швидких командах.
Про видобування даних веб-сторінок
Дія «Запустити JavaScript на веб-сторінці» дає вам змогу добути дані з будь-якої веб-сторінки, захоплюючи всі елементи, що відповідають певним критеріям, потім повторно звертаючись до цих елементів для виконання якогось завдання з даними (або подальшої інспекції цих елементів).
Наприклад, щоб створити список усіх зображальних елементів на веб-сторінці, використовуйте:
var elements = document.querySelectorAll("img");
В іншому прикладі, щоб отримати кожен елемент із класом “post,” використовуйте:
var elements = document.querySelectorAll(".post");
Коли NodeList створено, ви можете повторювати елементи (для подальшого фільтрування елементів або додання елементів до структури даних), використовуючи щось таке:
var elements = ...;
for (let element of elements) {
// ...
}
Додаткову інформацію щодо виконання запитів до веб-сторінки див. на https://developer.mozilla.org/Selectors і https://developer.mozilla.org/SelectorAll.
Вхідні дані дії «Запустити JavaScript на веб-сторінці»
Вхідними даними для дії «Запустити JavaScript на веб-сторінці» має бути будь-яка дійсна веб-сторінка Safari, тобто ви маєте запускати цю швидку команду з меню оприлюднення (а саме із Safari, SFSafariViewController або ASWebAuthenticationSession).
Коли швидка команда запускається з меню оприлюднення, вхідні дані з програми Safari передаються до першої дії у вашій швидкій команді.
Хоча вхідні дані для дії «Запустити JavaScript на веб-сторінці» мають бути веб-сторінкою Safari, ви можете вставляти в дію додаткові дані, використовуючи Магічну змінну. Для прикладу, ця швидка команда містить дію «Запустити JavaScript на веб-сторінці», що модифікує відео на веб-сторінці. Швидкістю відтворення відео контролює змінна Швидкості.
![Редактор швидкої команди показує дію «Запустити JavaScript на веб-сторінці», що містить Магічну змінну.](https://help.apple.com/assets/5E8CEA35094622DF10489984/5E8CEA42094622DF1048998D/uk_UA/097774a72e9ca2c2f175bec8209591ff.png)
Порада. Швидка команда Змінити швидкість відео доступна в Галереї.
Інформацію щодо запуску швидких команд із Safari див. у Запуск швидкої команди з іншої програми.
Вихідні дані дії «Запустити JavaScript на веб-сторінці»
Щоб видати дані, ви маєте викликати оброблювач завершення в JavaScript, як-от completion(result)
. Через те, що JavaScript зазвичай використовується з асинхронними моделями, виклик навмисне не синхронний. У такий спосіб ви можете завершити асинхронно. Наприклад, таке є дійсним:
window.setTimeout(function() {
completion(true);
}, 1000);
Вихідними даними для дії «Запустити JavaScript на веб-сторінці» є будь-який прийнятний тип даних формату JSON, зокрема:
Рядок
Число
Булеве значення (істина чи хиба)
Масив (містить будь-який інший прийнятний тип JSON)
Словник (містить будь-який інший прийнятний тип JSON)
Нуль
Невизначено
Непомітно для користувача, «Швидкі команди» автоматом закодовує і декодує значення, яке ви отримуєте, щоб передавати між JavaScript і програмою «Швидкі команди». Це означає, що вам не треба викликати JSON.stringify(result)
перед викликанням оброблювача завершення.
Через те, що видане значення є JSON, певні видані значення не працюватимуть добре. Наприклад, функція або Вузол не матимуть прийнятного JSON-кодованого подання. У такому випадку рекомендовано, щоб ви створили Масив/Словник, що містить JSON-суміcні значення, які потрібні вам.
Примітка. Обʼєктом у JavaScript є всього лише словник, тому базові обʼєкти добре конвертуються в JSON.
Якщо ви не хочете отримувати жодних даних із дії «Запустити JavaScript на веб-сторінці», ви можете викликати completion()
без жодного аргументу в цій функції (бо невизначено
є дійсними вихідними даними). Це те саме, що викликання completion(undefined)
.
Більше інформації про JSON див. у Вступ до використання JSON у Швидких командах.
Докладніше про Вузли див. за адресою https://developer.mozilla.org/Node.
Докладніше про функції див. за адресою https://developer.mozilla.org/Functions.
Ліміт часу на дію «Запустити JavaScript на веб-сторінці»
Як і решта JavaScript-розширень у Safari, дія «Запустити JavaScript на веб-сторінці» має свій часовий ліміт і повинна виконуватися якомога швидше. JavaScript, що використовує синхронні функції, може бути не завершено вчасно, зокрема:
window.alert()
window.prompt()
window.confirm()
Часи очікування, що тривають більше одної секунди, наприклад:
window.setTimeout(function() { completion(); }, 5000);
Якщо ваш JavaScript перевищує часовий ліміт, швидка команда не зможе виконатися, і коли ви запустите цю швидку команду, зʼявиться повідомлення про помилку «Час на JavaScript минув».
Усунення помилок синтаксису й середовища виконання
Ви можете використовувати будь-який синтаксис, що підтримується в Safari, для опису JavaScript у дії «Запустити JavaScript на веб-сторінці». iOS 13 та iPadOS підтримують JavaScript-синтаксис ECMA 6, зокрема цикли for of
і let
.
У програмі Швидкі команди дія «Запустити JavaScript на веб-сторінці» допомагає вам виявити помилки з допомогою перевірки базового синтаксису до того, як ви запустите цю швидку команду з розширення Safari.
Коли ви вводите свій сценарій у текстовому полі, виділяння синтаксису допомагає вам стежити за коректністю JavaScript. Наприклад, якщо ви забули додати лапки в кінці рядка, весь текст за таким рядком виділяється.
Якщо синтаксис вашого сценарію правильний, але містить помилку середовища виконання, дія «Запустити JavaScript на веб-сторінці» виловлює і показує винятки. Для прикладу, якщо ваш сценарій посилається на змінну або функцію, якої не існує (як-от shortcuts.completion()
), під час виконання показується помилка.
Приватність і Безпека
Коли ви дозволяєте швидкій команді запускати Javascript на веб-сторінці, така швидка команда може отримати доступ до всієї інформації на цій веб-сторінці, зокрема, потенційно чутливих даних. Програма «Швидкі команди» вживає низку заходів, аби гарантувати, що ви запускаєте свої швидкі команди JavaScript у безпечний і приватний спосіб.
Коли ви запускаєте швидку команду, що містить дію «Запустити JavaScript на веб-сторінці», зʼявляється запрошення, що інформує вас про те, що ця швидка команда збирається взаємодіяти з цією веб-сторінкою. Це означає, що ця швидка команда може отримати доступ до потенційно чутливих даних на веб-сторінці, як-от паролів, телефонних номерів чи інформації кредитних карток.
![Редактор швидкої команди показує запрошення дозволити запуск швидкої команди на конкретному домені.](https://help.apple.com/assets/5E8CEA35094622DF10489984/5E8CEA42094622DF1048998D/uk_UA/64d44a97cd4a79b59b0f7f318c0d6fbf.png)
Коли ви торкаєте «Дозволити», швидка команда виконується на вказаній веб-сторінці. Якщо ви знов запускаєте ту саму швидку команду на тому самій веб-сторінці, «Швидкі команди» не показує це запрошення вдруге. Цей дозвіл залишається окремо для кожної швидкої команди, окремо для кожної веб-сторінки.
Після того, як ви надасте швидкій команді доступ до веб-сторінки, «Швидкі команди» вдається до ще одного кроку в убезпеченні вас від потенційно зловмисних сценаріїв, регулярно завантажуючи оновлені означення шкідливого ПЗ. Перед взаємодією з будь-якою веб-сторінкою «Швидкі команди» аналізує JavaScript, потім перевіряє означення шкідливого ПЗ. На підставі цієї оцінки «Швидкі команди» отримують наказ дозволити цьому сценарію, відмовити цьому сценарію, або ж показати додаткове запрошення перед дозволянням виконання цієї швидкої команди.
Це оцінення виконується на вашому пристрої, тобто вміст вашого JavaScript (у текстовому полі дії «Запустити JavaScript на веб-сторінці») не надсилається до зовнішнього сервера для аналізу.
Якщо запуску цієї швидкої команди запобігли, показується повідомлення про помилку з поясненням.
Важливо! За будь-яких обставин вам не варто відкривати швидку команду, що містить JavaScript, якому ви не довіряєте.