Вступ до дії «Запустити JavaScript на вебсторінці» у Швидких командах на Mac
Ледь не всі вебсторінки скриптуються за допомогою JavaScript, мови програмування, що створює динамічні ефекти у веббраузерах, зокрема анімації, інтерактивні меню, відтворенням відео тощо. Зазвичай ви не бачите JavaScript, коли переглядаєте вебсайт. Утім, побудувавши швидку команду, що містить дію «Запустити JavaScript на вебсторінці», і згодом запустивши таку швидку команду в програмі Safari, ви можете керувати JavaScript будь-якої вебсторінки.
Швидкі команди, що виконують ваші сценарії JavaScript на вебсторінці, мають безліч застосувань. Наприклад, ви можете створювати швидкі команди, що видобувають конкретні дані з вебсторінки й потім включають такі дані в якесь завдання, як-от виокремлення розкладу якогось заняття та його додання до програми «Календар» або експортування даних учасників групи в соціальній мережі та подальше додання таких даних до електронної таблиці.
Ви також можете створювати швидкі команди, що дозволяють вам модифікувати вебсторінку, наприклад, змінити шрифт тексту такої вебсторінки або швидкість, з якою відтворюється якесь її відео. Щоб запускати JavaScript зі швидкої команди, потрібно ввімкнути параметр. Див. у Експертні параметри Приватності й безпеки у Швидких командах на Mac.
Інформацію щодо використання швидких команд, що запускають JavaScript на вебсторінці, див. у Використання дії «Запустити JavaScript на вебсторінці» у Швидких командах на Mac.
Про видобування даних вебсторінок
Дія «Запустити 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 на вебсторінці», що змінює відео на вебсторінці. Швидкістю відтворення відео контролює змінна Швидкості.
Інформацію щодо запуску швидких команд із Safari див. у Запуск швидкої команди під час роботи на Mac.
Вихідні дані дії «Запустити 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()
без жодного аргументу в цій функції (бо undefined
є дійсними вихідними даними). Це те саме, що викликання completion(undefined)
.
Більше інформації про JSON див. у Вступ до використання JSON у Швидких командах на Mac.
Докладніше про Вузли див. за адресою 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 на вебсторінці».
У програмі Швидкі команди дія «Запустити JavaScript на вебсторінці» допомагає вам виявити помилки з допомогою перевірки базового синтаксису до того, як ви запустите цю швидку команду з розширення Safari.
Коли ви вводите свій сценарій у текстовому полі, виділяння синтаксису допомагає вам стежити за коректністю JavaScript. Наприклад, якщо ви забули додати лапки в кінці рядка, весь текст за таким рядком виділяється.
Якщо синтаксис вашого сценарію правильний, але містить помилку середовища виконання, дія «Запустити JavaScript на вебсторінці» виловлює і показує винятки. Для прикладу, якщо ваш сценарій посилається на змінну або функцію, якої не існує (як-от shortcuts.completion()
), під час виконання показується помилка.