Этот модуль предоставляет поддержку вставки пользовательского JavaScript-контента в ваши веб-вью и для JavaScript, чтобы отправлять сообщения обратно в Hammerspoon.
Обзор API
Конструкторы - вызовы API, возвращающие объект, обычно предоставляющий методы API
Создает новый контроллер пользовательского контента для веб-вью и создает порт сообщений с указанным именем для поддержки сообщений JavaScript.
Параметры
name - имя порта сообщений, которое JavaScript в веб-вью может использовать для отправки сообщений в Hammerspoon.
Возвращаемое значение
объект usercontentControllerObject
Примечания
Этот объект должен быть предоставлен в качестве последнего аргумента конструктору hs.webview.new, чтобы связать веб-вью с этим контроллером контента. Все новые окна, созданные из этого родительского веб-вью, также будут использовать этот контроллер.
См. hs.webview.usercontent:setCallback, чтобы узнать больше о портах сообщений.
Добавляет скрипт, который необходимо вставить в веб-вью, использующие этот контроллер пользовательского контента.
Параметры
scriptTable - таблица, содержащая следующие ключи, которые определяют скрипт и способ его вставки:
source - вставляемый JavaScript (обязательно)
mainFrame - логическое значение, указывающее, вставляется ли этот скрипт только для основного кадра веб-вью (true) или для всех кадров внутри веб-вью (false). По умолчанию true.
injectionTime - строка, указывающая, вставляется ли скрипт в "documentStart" или "documentEnd". По умолчанию "documentStart".
Возвращаемое значение
объект usercontentControllerObject или nil, если таблица скриптов была некорректно сформирована.
Удаляет все пользовательские скрипты, определенные для этого контроллера пользовательского контента.
Параметры
Нет
Возвращаемое значение
объект usercontentControllerObject
Примечания
Класс WKUserContentController позволяет только удалять все скрипты. Если вам нужна более точная настройка, сделайте копию текущих скриптов с помощью hs.webview.usercontent.userScripts() предварительно, чтобы вы могли воссоздать нужные скрипты.
Устанавливает или удаляет функцию обратного вызова для обработки сообщений, отправленных в порт сообщений этого пользовательского контента.
Параметры
fn - функция, которая должна получать сообщения, отправленные в порт сообщений этого пользовательского контента. Укажите явное nil, чтобы отключить обратный вызов. Функция должна принимать один аргумент, который будет отправленным сообщением, и возвращаемое значение будет проигнорировано.
Возвращаемое значение
объект usercontentControllerObject
Примечания
В вашем (вставленном или обслуживаемом) JavaScript вы можете отправлять сообщения через порт сообщений, созданный с помощью конструктора следующим образом:
try { webkit.messageHandlers.name>.postMessage(message-object); } catch(err) { console.log('The controller does not exist yet'); }
Где name соответствует имени, указанному в конструкторе, а message-object — это объект, который нужно отправить в функцию. Этот объект может быть числом, строкой, датой, массивом, словарем (таблицей) или nil.
Получает таблицу, содержащую все текущие определенные скрипты вставки для этого контроллера пользовательского контента.
Параметры
Нет
Возвращаемое значение
Массив вставленных пользовательских скриптов. Каждый элемент массива будет таблицей, содержащей следующие ключи:
source - вставляемый JavaScript
mainFrame - логическое значение, указывающее, вставляется ли этот скрипт только для основного кадра веб-вью (true) или для всех кадров внутри веб-вью (false)
injectionTime - строка, указывающая, вставляется ли скрипт в "documentStart" или "documentEnd".
Примечания
Поскольку класс WKUserContentController позволяет только удалять все скрипты, вы можете использовать этот метод для генерации списка всех скриптов, изменить его и затем использовать его в цикле для повторного применения скриптов, если вам нужно удалить только несколько скриптов.