Spec-Zone.ru › Web Extensions

Действия пользователя

Некоторые API WebExtension выполняют функции, которые обычно выполняются в результате действия пользователя. Например:

  • Действие браузера с всплывающим окном отобразит всплывающее окно, когда пользователь его щелкнет, но также существует API browserAction.openPopup, позволяющий расширению открыть всплывающее окно программно.
  • Если расширение добавляет боковую панель, она обычно открывается пользователем через часть встроенного пользовательского интерфейса браузера, например, меню «Вид/Боковая панель». Но также существует API sidebarAction.open, позволяющий расширению открыть боковую панель программно.

Чтобы придерживаться принципа «без неожиданностей», такие API могут вызываться только из обработчика действия пользователя. Действия пользователя включают следующее:

  • Нажатие на действие браузера или действие страницы расширения.
  • Выбор пункта контекстного меню, определенного расширением.
  • Активация сочетания клавиш, определенного расширением (это считается действием пользователя только начиная с Firefox 63).
  • Нажатие кнопки на странице, связанной с расширением.

Например:

function handleClick() {
  browser.sidebarAction.open();
}

browser.browserAction.onClicked.addListener(handleClick);

Обратите внимание, что действия пользователя на обычных веб-страницах не считаются действиями пользователя в этих целях. Например, если пользователь нажимает кнопку на обычной веб-странице, а скрипт содержимого добавил обработчик щелчка для этой кнопки и в этом обработчике отправляет сообщение на фоновый पृष्ठ расширения, то обработчик сообщений фонового страницы не считается обработчиком действия пользователя.

Также, если обработчик ввода пользователя ожидает promise, то его статус как обработчика пользовательского ввода теряется. Например:

async function handleClick() {
  let result = await someAsyncFunction();

  // this will fail, because the handler lost its "user action handler" status
  browser.sidebarAction.open();
}

browser.browserAction.onClicked.addListener(handleClick);

© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/User_actions

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API