<webview> тэг
Предупреждение
Тэг webview Electron основан на webview Chromium, который подвергается значительным архитектурным изменениям. Это влияет на стабильность webviews, включая отрисовку, навигацию и маршрутизацию событий. В настоящее время рекомендуется не использовать тэг webview и рассмотреть альтернативы, такие как iframe, BrowserView Electron или архитектуру, которая полностью избегает встроенного контента.
Включение
По умолчанию тэг webview отключен в Electron >= 5. Вам необходимо включить его, установив опцию webviewTag webPreferences при создании BrowserWindow. Более подробная информация представлена в документации конструктора BrowserWindow.
Обзор
Отображение внешнего веб-контента в изолированном фрейме и процессе.
Процесс: Рендеринг
Этот класс не экспортируется из модуля 'electron'. Он доступен только в качестве возвращаемого значения других методов API Electron.
Используйте тэг webview для вставки 'гостевого' контента (например, веб-страниц) в ваше приложение Electron. Гостевой контент содержится внутри контейнера webview. Встроенная страница в вашем приложении управляет тем, как отображается и структурируется гостевой контент.
В отличие от iframe, тэг webview выполняется в отдельном процессе по сравнению с вашим приложением. Он не имеет таких же прав доступа, как ваша веб-страница, и все взаимодействия между вашим приложением и встроенным контентом будут асинхронными. Это защищает ваше приложение от встроенного контента. Примечание: Большинство методов, вызываемых на веб-вью из страницы-хоста, требуют синхронного вызова в основной процесс.
Пример
Чтобы встроить веб-страницу в ваше приложение, добавьте тэг webview на страницу встраивания вашего приложения (эта страница отобразит гостевой контент). В простейшем виде тэг webview включает src веб-страницы и CSS-стили, которые управляют отображением контейнера webview:
<webview id="foo" src="https://www.github.com/" style="display:inline-flex; width:640px; height:480px"></webview>
Если вы хотите каким-либо образом управлять гостевым контентом, вы можете написать JavaScript, который прослушивает события webview и реагирует на них с помощью методов webview. Вот пример кода с двумя обработчиками событий: один прослушивает загрузку веб-страницы, другой – завершение загрузки и отображает сообщение "Загрузка..." во время загрузки:
<script>
onload = () => {
const webview = document.querySelector('webview')
const indicator = document.querySelector('.indicator')
const loadstart = () => {
indicator.innerText = 'loading...'
}
const loadstop = () => {
indicator.innerText = ''
}
webview.addEventListener('did-start-loading', loadstart)
webview.addEventListener('did-stop-loading', loadstop)
}
</script>
Внутренняя реализация
Внутри webview реализовано с помощью Out-of-Process iframes (OOPIFs). Тэг webview представляет собой по существу пользовательский элемент, использующий shadow DOM для обертывания элемента iframe внутри него.
Таким образом, поведение тэга webview очень похоже на iframe кросс-доменные, как в примерах:
- При переходе к элементу
webview, фокус страницы переключится с фрейма встраивания наwebview. - Вы не можете добавлять обработчики событий клавиатуры, мыши и прокрутки к
webview. - Все взаимодействия между фреймом встраивания и
webviewявляются асинхронными.
Примечания по стилизации CSS
Обратите внимание, что стили тэга webview используют display:flex; внутри, чтобы обеспечить, что дочерний элемент iframe заполняет всю высоту и ширину контейнера webview при использовании традиционных и flexbox-макетов. Не перезаписывайте свойство CSS по умолчанию display:flex;, если не указываете display:inline-flex; для макета в один столбец.
Атрибуты тега
Тэг webview имеет следующие атрибуты:
src
<webview src="https://www.github.com/"></webview>
Значение string, представляющее видимый URL. Запись в этот атрибут инициирует навигацию верхнего уровня.
Назначение src своего собственного значения перезагрузит текущую страницу.
Атрибут src также может принимать данные URL, такие как data:text/plain,Hello, world!.
nodeintegration
<webview src="http://www.google.com/" nodeintegration></webview>
boolean атрибут. При его наличии гостевая страница в webview будет иметь Node.js интеграцию и сможет использовать Node.js API, такие как require и process, для доступа к ресурсам низкого уровня системы. По умолчанию интеграция Node.js отключена на гостевой странице.
nodeintegrationinsubframes
<webview src="http://www.google.com/" nodeintegrationinsubframes></webview>
Атрибут boolean для экспериментальной опции включения поддержки NodeJS в подфреймах, таких как iframe внутри webview. Все ваши предустановки загружаются для каждого iframe, вы можете использовать process.isMainFrame для определения, находитесь ли вы во фрейме основного уровня или нет. Эта опция отключена по умолчанию на гостевой странице.
plugins
<webview src="https://www.github.com/" plugins></webview>
boolean атрибут. При его наличии гостевая страница в webview сможет использовать плагины браузера. Плагины отключены по умолчанию.
preload
<!-- from a file --> <webview src="https://www.github.com/" preload="./test.js"></webview> <!-- or if you want to load from an asar archive --> <webview src="https://www.github.com/" preload="./app.asar/test.js"></webview>
string атрибут, указывающий на скрипт, который будет загружен до выполнения других скриптов на гостевой странице. Протокол URL скрипта должен быть file: (даже при использовании asar: архивов), поскольку он загружается Node.js require под капотом, который рассматривает asar: архивы как виртуальные каталоги.
Если у гостевой страницы нет интеграции Node, этот скрипт по-прежнему будет иметь доступ ко всем Node.js API, но глобальные объекты, введённые Node.js, будут удалены после завершения выполнения этого скрипта.
httpreferrer
<webview src="https://www.github.com/" httpreferrer="http://cheng.guru"></webview>
string атрибут, устанавливающий URL-адрес отправителя для гостевой страницы.
useragent
<webview src="https://www.github.com/" useragent="Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; AS; rv:11.0) like Gecko"></webview>
string атрибут, устанавливающий пользовательский агент для гостевой страницы до навигации на страницу. После загрузки страницы используйте метод setUserAgent, чтобы изменить пользовательский агент.
disablewebsecurity
<webview src="https://www.github.com/" disablewebsecurity></webview>
boolean атрибут. При его наличии у гостевой страницы будет отключена безопасность веб-страницы. По умолчанию безопасность веб-страницы включена.
partition
<webview src="https://github.com" partition="persist:github"></webview> <webview src="https://electronjs.org" partition="electron"></webview>
string атрибут, устанавливающий сеанс, используемый страницей. Если partition начинается с persist:, страница будет использовать постоянный сеанс, доступный всем страницам в приложении с тем же partition. Если нет префикса persist:, страница будет использовать сеанс в памяти. Назначение одинакового partition позволяет нескольким страницам совместно использовать один сеанс. Если partition не задан, будет использован сеанс приложения по умолчанию.
Это значение можно изменить только до первой навигации, так как сеанс активного процесса рендеринга не может быть изменён. Попытки изменить значение после этого приведут к ошибке DOM.
END_OF_DOCUMENT_MARKER
allowpopups
<webview src="https://www.github.com/" allowpopups></webview>
Атрибут boolean. Если этот атрибут присутствует, гостевая страница сможет открывать новые окна. По умолчанию всплывающие окна отключены.
webpreferences
<webview src="https://github.com" webpreferences="allowRunningInsecureContent, javascript=no"></webview>
А string, представляющий собой список строк, разделённых запятыми, который определяет веб-предпочтения, которые должны быть установлены на веб-вью. Полный список поддерживаемых строк предпочтений можно найти в BrowserWindow.
Строка имеет тот же формат, что и строка функций в window.open. Само по себе имя получает true значение булевого типа. Предпочтение может быть установлено на другое значение путём включения =, за которым следует значение. Специальные значения yes и 1 интерпретируются как true, в то время как no и 0 интерпретируются как false.
enableblinkfeatures
<webview src="https://www.github.com/" enableblinkfeatures="PreciseMemoryInfo, CSSVariables"></webview>
А string, представляющий собой список строк, разделённых ,, который определяет функции blink, которые должны быть включены. Полный список поддерживаемых строк функций можно найти в файле RuntimeEnabledFeatures.json5.
disableblinkfeatures
<webview src="https://www.github.com/" disableblinkfeatures="PreciseMemoryInfo, CSSVariables"></webview>
А string, представляющий собой список строк, разделённых ,, который определяет функции blink, которые должны быть отключены. Полный список поддерживаемых строк функций можно найти в файле RuntimeEnabledFeatures.json5.
Методы
Тег webview имеет следующие методы:
Примечание: Элемент веб-вью должен быть загружен перед использованием методов.
Пример
const webview = document.querySelector('webview')
webview.addEventListener('dom-ready', () => {
webview.openDevTools()
})
<webview>.loadURL(url[, options])
-
urlURL
Возвращает Promise<void> - обещание выполнится, когда страница завершит загрузку (см. did-finish-load), и отклонится, если страница не загрузится (см. did-fail-load).
Загружает url в веб-вью, url должен содержать префикс протокола, например, http:// или file://.
<webview>.downloadURL(url)
-
urlстрока
Инициализирует загрузку ресурса по адресу url без навигации.
<webview>.getURL()
Возвращает string - URL гостевой страницы.
<webview>.getTitle()
Возвращает string - Заголовок гостевой страницы.
<webview>.isLoading()
Возвращает boolean - Загрузка ресурсов гостевой страницы всё ещё происходит.
<webview>.isLoadingMainFrame()
Возвращает boolean - Основной фрейм (а не только фреймы или фреймы внутри него) всё ещё загружается.
<webview>.isWaitingForResponse()
Возвращает boolean - Гостевая страница ждёт первого ответа на основной ресурс страницы.
<webview>.stop()
Останавливает любую ожидающую навигацию.
<webview>.reload()
Перезагружает гостевую страницу.
<webview>.reloadIgnoringCache()
Перезагружает гостевую страницу и игнорирует кэш.
<webview>.canGoBack()
Возвращает boolean - Возможно ли вернуться назад на гостевой странице.
<webview>.canGoForward()
Возвращает boolean - Возможно ли перейти вперёд на гостевой странице.
<webview>.canGoToOffset(offset)
-
offsetЦелое число
Возвращает boolean - Возможно ли перейти на offset.
<webview>.clearHistory()
Очищает историю навигации.
<webview>.goBack()
Переходит назад на гостевой странице.
<webview>.goForward()
Переходит вперёд на гостевой странице.
<webview>.goToIndex(index)
-
indexЦелое число
Переходит к указанному абсолютному индексу.
<webview>.goToOffset(offset)
-
offsetЦелое число
Переходит к указанному смещению от "текущей записи".
<webview>.isCrashed()
Возвращает boolean - произошла ли ошибка в процессе рендеринга.
<webview>.setUserAgent(userAgent)
-
userAgentстрока
Переопределяет пользовательский агент для гостевой страницы.
<webview>.getUserAgent()
Возвращает string - пользовательский агент для гостевой страницы.
<webview>.insertCSS(css)
-
cssстрока
Возвращает Promise<string> - обещание, которое выполняется с ключом вставленного CSS, который впоследствии может быть использован для удаления CSS с помощью <webview>.removeInsertedCSS(key).
Вставляет CSS в текущую веб-страницу и возвращает уникальный ключ для вставленного стиля.
<webview>.removeInsertedCSS(key)
-
keyстрока
Возвращает Promise<void> - выполняется, если удаление прошло успешно.
Удаляет вставленный CSS из текущей веб-страницы. Стилизованный лист определяется по своему ключу, который возвращается из <webview>.insertCSS(css).
<webview>.executeJavaScript(code[, userGesture])
-
codeстрока -
userGestureлогическое значение (необязательно) - По умолчаниюfalse.
Возвращает Promise<any> - промис, который разрешается результатом выполненного кода или отклоняется, если результат кода — отклоненный промис.
Выполняет code на странице. Если userGesture установлено, создаст контекст пользовательского жеста на странице. HTML-API, такие как requestFullScreen, требующие пользовательских действий, могут воспользоваться этим параметром для автоматизации.
<webview>.openDevTools()
Открывает окно DevTools для гостевой страницы.
<webview>.closeDevTools()
Закрывает окно DevTools гостевой страницы.
<webview>.isDevToolsOpened()
Возвращает boolean - наличие окна DevTools на гостевой странице.
<webview>.isDevToolsFocused()
Возвращает boolean - фокусировка окна DevTools гостевой страницы.
<webview>.inspectElement(x, y)
-
xЦелое число -
yЦелое число
Начинает инспекцию элемента в позиции (x, y) гостевой страницы.
<webview>.inspectSharedWorker()
Открывает DevTools для контекста общего работника, присутствующего на гостевой странице.
<webview>.inspectServiceWorker()
Открывает DevTools для контекста service worker, присутствующего на гостевой странице.
<webview>.setAudioMuted(muted)
-
mutedлогическое значение
Устанавливает состояние звука на гостевой странице как немой.
<webview>.isAudioMuted()
Возвращает boolean - немой ли звук на гостевой странице.
<webview>.isCurrentlyAudible()
Возвращает boolean - воспроизводится ли звук в данный момент.
<webview>.undo()
Выполняет команду редактирования undo на странице.
<webview>.redo()
Выполняет команду редактирования redo на странице.
<webview>.cut()
Выполняет команду редактирования cut на странице.
<webview>.copy()
Выполняет команду редактирования copy на странице.
<webview>.paste()
Выполняет команду редактирования paste на странице.
<webview>.pasteAndMatchStyle()
Выполняет команду редактирования pasteAndMatchStyle на странице.
<webview>.delete()
Выполняет команду редактирования delete на странице.
<webview>.selectAll()
Выполняет команду редактирования selectAll на странице.
<webview>.unselect()
Выполняет команду редактирования unselect на странице.
<webview>.replace(text)
-
textстрока
Выполняет команду редактирования replace на странице.
<webview>.replaceMisspelling(text)
-
textстрока
Выполняет команду редактирования replaceMisspelling на странице.
<webview>.insertText(text)
-
textстрока
Возвращает Promise<void>
Вставляет text в фокусированный элемент.
<webview>.findInPage(text[, options])
-
textстрока - Искомое содержимое, не должно быть пустым.
Возвращает Integer - идентификатор запроса.
Инициирует запрос на поиск всех совпадений text на веб-странице. Результат запроса можно получить, подписавшись на событие found-in-page.
<webview>.stopFindInPage(action)
-
actionстрока - Определяет действие при завершении запроса<webview>.findInPage.-
clearSelection- Очистить выделение. -
keepSelection- Вернуть выделение в обычное состояние. -
activateSelection- Сфокусироваться и нажать на узел выделения.
-
Останавливает любой запрос findInPage для webview с указанным action.
<webview>.print([options])
Возвращает Promise<void>
Распечатывает веб-страницу webview. То же, что и webContents.print([options]).
<webview>.printToPDF(options)
Возвращает Promise<Uint8Array> - Разрешение сгенерированного PDF-файла.
Распечатывает веб-страницу webview в формате PDF. То же, что и webContents.printToPDF(options).
<webview>.capturePage([rect])
-
rectПрямоугольник (необязательно) - Область страницы, которая должна быть захвачена.
Возвращает Promise<NativeImage> - Разрешение с изображением NativeImage
Делает снимок страницы в rect. Опуская rect захватывается вся видимая область страницы.
<webview>.send(channel, ...args)
-
channelстрока -
...argsлюбой массив
Возвращает Promise<void>
Отправляет асинхронное сообщение в процесс рендеринга через channel, вы также можете отправить произвольные аргументы. Процесс рендеринга может обработать сообщение, прослушивая событие channel с модулем ipcRenderer.
См. webContents.send для примеров.
<webview>.sendToFrame(frameId, channel, ...args)
-
frameId[число, число] -[processId, frameId] -
channelстрока -
...argsлюбой массив
Возвращает Promise<void>
Отправляет асинхронное сообщение в процесс рендеринга через channel, вы также можете отправить произвольные аргументы. Процесс рендеринга может обработать сообщение, прослушивая событие channel с модулем ipcRenderer.
См. webContents.sendToFrame для примеров.
<webview>.sendInputEvent(event)
Возвращает Promise<void>
Отправляет событие ввода event на страницу.
См. webContents.sendInputEvent для подробного описания объекта event.
<webview>.setZoomFactor(factor)
-
factorчисло - Коэффициент масштабирования.
Изменяет коэффициент масштабирования на указанное значение. Коэффициент масштабирования — это процент масштабирования, делённый на 100, поэтому 300% = 3.0.
<webview>.setZoomLevel(level)
-
levelчисло - Уровень масштабирования.
Изменяет уровень масштабирования на указанное значение. Исходный размер равен 0, и каждое увеличение или уменьшение соответствует увеличению или уменьшению масштаба на 20% относительно значения по умолчанию, соответственно, с максимальными значениями 300% и минимальными 50% от исходного размера. Формула для этого scale := 1.2 ^ level.
ПРИМЕЧАНИЕ: Политика масштабирования на уровне Chromium — одинаковая для всех доменов, т. е. уровень масштабирования для конкретного домена распространяется на все экземпляры окон с тем же доменом. Отличие URL окна обеспечит работу масштабирования в каждом окне.
<webview>.getZoomFactor()
Возвращает number - текущий коэффициент масштабирования.
<webview>.getZoomLevel()
Возвращает number - текущий уровень масштабирования.
<webview>.setVisualZoomLevelLimits(minimumLevel, maximumLevel)
-
minimumLevelчисло -
maximumLevelчисло
Возвращает Promise<void>
Устанавливает максимальный и минимальный уровень масштабирования.
<webview>.showDefinitionForSelection() macOS
Отображает всплывающее окно словаря, которое ищет выделенное слово на странице.
<webview>.getWebContentsId()
Возвращает number - ID WebContents этого webview.
События DOM
Следующие события DOM доступны для тега webview:
Событие: 'load-commit'
Возвращает:
END_OF_DOCUMENT_MARKER-
urlстрока -
isMainFrameбулево
Вызывается, когда загрузка завершена. Это включает навигацию внутри текущего документа, а также загрузки документов подфреймов, но не включает асинхронные загрузки ресурсов.
Событие: 'did-finish-load'
Вызывается, когда навигация завершена, т. е. индикатор загрузки вкладки перестанет вращаться, и будет вызвано событие onload.
Событие: 'did-fail-load'
Возвращает:
-
errorCodeЦелое число -
errorDescriptionстрока -
validatedURLстрока -
isMainFrameбулево
Это событие подобно did-finish-load, но оно срабатывает, когда загрузка завершилась неудачно или была отменена, например, когда вызвана window.stop().
Событие: 'did-frame-finish-load'
Возвращает:
-
isMainFrameбулево
Вызывается, когда навигация во фрейме завершена.
Событие: 'did-start-loading'
Соответствует моментам, когда индикатор загрузки вкладки начинает вращаться.
Событие: 'did-stop-loading'
Соответствует моментам, когда индикатор загрузки вкладки останавливается.
Событие: 'did-attach'
Вызывается при подключении к содержимому веб-встраиваемого элемента.
Событие: 'dom-ready'
Вызывается, когда документ во фрейме загружен.
Событие: 'page-title-updated'
Возвращает:
-
titleстрока -
explicitSetбулево
Вызывается при изменении заголовка страницы во время навигации. explicitSet равно false, когда заголовок синтезируется из URL файла.
Событие: 'page-favicon-updated'
Возвращает:
-
faviconsстрока[] - Массив URL-адресов.
Вызывается, когда страница получает URL-адреса значков.
Событие: 'enter-html-full-screen'
Вызывается при переходе страницы в полноэкранный режим, инициированный HTML API.
Событие: 'leave-html-full-screen'
Вызывается при выходе страницы из полноэкранного режима, инициированного HTML API.
Событие: 'console-message'
Возвращает:
-
levelЦелое число - Уровень ведения журнала от 0 до 3. В соответствии сverbose,info,warningиerror. -
messageстрока - Само сообщение консоли -
lineЦелое число - Номер строки источника, который вызвал это сообщение консоли -
sourceIdстрока
Вызывается, когда гостевое окно записывает сообщение в консоль.
Следующий пример кода пересылает все сообщения журнала в консоль встраиваемого элемента, не обращая внимания на уровень ведения журнала или другие свойства.
const webview = document.querySelector('webview')
webview.addEventListener('console-message', (e) => {
console.log('Guest page logged a message:', e.message)
})
Событие: 'found-in-page'
Возвращает:
-
resultОбъект-
requestIdЦелое число -
activeMatchOrdinalЦелое число - Позиция активной совпадения. -
matchesЦелое число - Количество совпадений. -
selectionAreaПрямоугольник - Координаты области первого совпадения. -
finalUpdateбулево
-
Вызывается, когда доступен результат запроса webview.findInPage.
const webview = document.querySelector('webview')
webview.addEventListener('found-in-page', (e) => {
webview.stopFindInPage('keepSelection')
})
const requestId = webview.findInPage('test')
console.log(requestId)
Событие: 'new-window'
Возвращает:
-
urlстрока -
frameNameстрока -
dispositionстрока - Может бытьdefault,foreground-tab,background-tab,new-window,save-to-diskиother.
Вызывается, когда гостевая страница пытается открыть новое окно браузера.
Следующий пример кода открывает новый URL в системном браузере по умолчанию.
const { shell } = require('electron')
const webview = document.querySelector('webview')
webview.addEventListener('new-window', async (e) => {
const protocol = (new URL(e.url)).protocol
if (protocol === 'http:' || protocol === 'https:') {
await shell.openExternal(e.url)
}
})
Событие: 'will-navigate'
Возвращает:
-
urlстрока
Срабатывает, когда пользователь или страница хотят начать навигацию. Это может произойти, когда изменяется объект window.location или пользователь нажимает ссылку на странице.
Это событие не будет вызываться, когда навигация запускается программно с помощью API, таких как <webview>.loadURL и <webview>.back.
Также оно не вызывается во время навигации на странице, например, при нажатии на якорь или обновлении window.location.hash. Используйте событие did-navigate-in-page для этой цели.
Вызов event.preventDefault() НЕ оказывает никакого эффекта.
Событие: 'did-start-navigation'
Возвращает:
-
urlстрока -
isInPlaceбулево -
isMainFrameбулево -
frameProcessIdЦелое число -
frameRoutingIdЦелое число
Срабатывает, когда любой фрейм (включая основной) начинает навигацию. isInPlace будет true для навигации по странице.
Событие: 'did-redirect-navigation'
Возвращает:
-
urlстрока -
isInPlaceбулево -
isMainFrameбулево -
frameProcessIdЦелое число -
frameRoutingIdЦелое число
Срабатывает после перенаправления на серверной стороне во время навигации. Например, перенаправление 302.
Событие: 'did-navigate'
Возвращает:
-
urlстрока
Срабатывает, когда навигация завершена.
Это событие не вызывается для внутристраничной навигации, такой как нажатие на ссылки якорей или обновление window.location.hash. Используйте событие did-navigate-in-page для этой цели.
Событие: 'did-frame-navigate'
Возвращает:
-
urlстрока -
httpResponseCodeЦелое число - -1 для навигации, не являющейся HTTP -
httpStatusTextстрока - пустая для навигации, не являющейся HTTP -
isMainFrameбулево -
frameProcessIdЦелое число -
frameRoutingIdЦелое число
Срабатывает, когда завершена навигация по любому фрейму.
Это событие не вызывается для внутристраничной навигации, например, при нажатии на ссылки якорей или обновлении window.location.hash. Используйте событие did-navigate-in-page для этой цели.
Событие: 'did-navigate-in-page'
Возвращает:
-
isMainFrameбулево -
urlстрока
Срабатывает при внутристраничной навигации.
Когда происходит внутристраничная навигация, URL страницы изменяется, но не вызывает навигацию за пределами страницы. Примерами этого являются нажатие на ссылки якорей или срабатывание события DOM hashchange.
Событие: 'close'
Вызывается, когда гостевая страница пытается закрыть себя.
Следующий пример кода перенаправляет webview на about:blank при попытке гостевой страницы закрыть себя.
const webview = document.querySelector('webview')
webview.addEventListener('close', () => {
webview.src = 'about:blank'
})
Событие: 'ipc-message'
Возвращает:
-
frameId[число, число] - пара[processId, frameId]. -
channelстрока -
argsлюбой[]
Вызывается, когда гостевая страница отправляет асинхронное сообщение странице-встраивающему элементу.
С помощью метода sendToHost и события ipc-message вы можете взаимодействовать между гостевой страницей и страницей-встраивающим элементом.
// In embedder page.
const webview = document.querySelector('webview')
webview.addEventListener('ipc-message', (event) => {
console.log(event.channel)
// Prints "pong"
})
webview.send('ping')
// In guest page.
const { ipcRenderer } = require('electron')
ipcRenderer.on('ping', () => {
ipcRenderer.sendToHost('pong')
})
Событие: 'crashed'
Срабатывает, когда процесс отрисовки зависает.
Событие: 'plugin-crashed'
Возвращает:
-
nameстрока -
versionстрока
Срабатывает, когда зависает процесс плагина.
Событие: 'destroyed'
Срабатывает, когда содержимое WebContents уничтожается.
Событие: 'media-started-playing'
Вызывается при начале воспроизведения медиа.
Событие: 'media-paused'
Вызывается при паузе или завершении воспроизведения медиа.
Событие: 'did-change-theme-color'
Возвращает:
-
themeColorстрока
Вызывается при изменении цвета темы страницы. Обычно это происходит при обнаружении тега meta:
<meta name='theme-color' content='#ff0000'>
Событие: 'update-target-url'
Возвращает:
-
urlстрока
Вызывается при перемещении курсора мыши над ссылкой или при переходе к ссылке с помощью клавиатуры.
Событие: 'devtools-opened'
Вызывается при открытии DevTools.
Событие: 'devtools-closed'
Вызывается при закрытии DevTools.
Событие: 'devtools-focused'
Вызывается при фокусировке/открытии DevTools.
Событие: 'context-menu'
Возвращает:
-
paramsОбъект-
xЦелое число - координата x. -
yЦелое число - координата y. -
linkURLстрока - URL ссылки, содержащей узел, на котором было вызвано контекстное меню. -
linkTextстрока - Текст, связанный со ссылкой. Может быть пустой строкой, если содержимое ссылки — изображение. -
pageURLстрока - URL главной страницы, на которой было вызвано контекстное меню. -
frameURLстрока - URL подрамки, на которой было вызвано контекстное меню. -
srcURLстрока - Исходный URL элемента, на котором было вызвано контекстное меню. У элементов с исходными URL-адресами это изображения, аудио и видео. -
mediaTypeстрока - Тип узла, на котором было вызвано контекстное меню. Может бытьnone,image,audio,video,canvas,fileилиplugin. -
hasImageContentsлогическое значение - Указывает, вызвано ли контекстное меню на изображении, которое имеет непустое содержимое. -
isEditableлогическое значение - Указывает, является ли контекст редактируемым. -
selectionTextстрока - Текст выделения, на котором было вызвано контекстное меню. -
titleTextстрока - Текст заголовка выделения, на котором было вызвано контекстное меню. -
altTextстрока - Текст alt выделения, на котором было вызвано контекстное меню. -
suggestedFilenameстрока - Предлагаемое имя файла для сохранения файла через опцию «Сохранить как» в контекстном меню. -
selectionRectПрямоугольник - Прямоугольник, представляющий координаты выделения в пространстве документа. -
selectionStartOffsetчисло - Начальная позиция текста выделения. -
referrerPolicyПолитика пересылки - Политика пересылки кадра, на котором вызвано меню. -
misspelledWordстрока - Написанное неверно слово под курсором (при наличии). -
dictionarySuggestionsстрока[] - Массив предлагаемых слов, которые пользователь может использовать для заменыmisspelledWord. Доступно только при наличии неверно написанного слова и включенной проверки правописания. -
frameCharsetстрока - Кодировка символов кадра, на котором было вызвано меню. -
inputFieldTypeстрока - Если контекстное меню было вызвано на поле ввода, тип этого поля. Возможные значения:none,plainText,password,other. -
spellcheckEnabledлогическое значение - Если контекст редактируемый, включена ли проверка правописания. -
menuSourceTypeстрока - Источник ввода, который вызвал контекстное меню. Может бытьnone,mouse,keyboard,touch,touchMenu,longPress,longTap,touchHandle,stylus,adjustSelectionилиadjustSelectionReset. -
mediaFlagsОбъект - Флаги для элемента медиа, на котором было вызвано контекстное меню.-
inErrorлогическое значение - Завис ли элемент медиа. -
isPausedлогическое значение - Приостановлен ли элемент медиа. -
isMutedлогическое значение - Выключен ли звук элемента медиа. -
hasAudioлогическое значение - Есть ли звук в элементе медиа. -
isLoopingлогическое значение - Циклическое воспроизведение элемента медиа. -
isControlsVisibleлогическое значение - Отображаются ли элементы управления элементом медиа. -
canToggleControlsлогическое значение - Могут ли элементы управления элементом медиа переключаться. -
canPrintлогическое значение - Может ли элемент медиа быть распечатан. -
canSaveлогическое значение - Может ли элемент медиа быть загружен. -
canShowPictureInPictureлогическое значение - Может ли элемент медиа показывать видео в виде миниатюры. -
isShowingPictureInPictureлогическое значение - В настоящее время отображается ли видео в виде миниатюры. -
canRotateлогическое значение - Может ли элемент медиа быть повернут. -
canLoopлогическое значение - Может ли элемент медиа быть воспроизведён циклически.
-
-
editFlagsОбъект - Эти флаги показывают, считает ли рендерер, что может выполнить соответствующее действие.-
canUndoлогическое значение - Может ли рендерер отменить действие. -
canRedoлогическое значение - Может ли рендерер повторить действие. -
canCutлогическое значение - Может ли рендерер вырезать. -
canCopyлогическое значение - Может ли рендерер скопировать. -
canPasteлогическое значение - Может ли рендерер вставить. -
canDeleteлогическое значение - Может ли рендерер удалить. -
canSelectAllлогическое значение - Может ли рендерер выбрать всё. -
canEditRichlyлогическое значение - Может ли рендерер редактировать текст форматированно.
-
-
Вызывается при появлении нового контекстного меню, которое нужно обработать.
© GitHub Inc.
Licensed under the MIT license.
https://www.electronjs.org/docs/latest/api/webview-tag