Spec-Zone.ru › Web Extensions

Страницы расширений

Вы можете включать HTML-страницы в своё расширение для предоставления форм, справки или любого другого контента, необходимого вашему расширению.

Example of a simple bundled page displayed as a detached panel.

Эти страницы также получают доступ к тем же привилегированным JavaScript-API, которые доступны скриптам фонового процесса вашего расширения. Однако они находятся в своей собственной вкладке, со своей собственной очередью событий JavaScript, своими собственными глобальными переменными и т.д.

Представьте страницу фонового процесса как «скрытую страницу расширения».

Определение страниц расширения

Вы можете включать HTML-файлы — а также связанные CSS- или JavaScript-файлы — в своё расширение. Файлы можно включить в корневой каталог или организовать в осмысленных подкаталогах.

/my-extension
    /manifest.json
    /my-page.html
    /my-page.js

Отображение страниц расширения

Существует два варианта отображения страниц расширения: windows.create() и tabs.create().

Используя windows.create(), например, вы можете открыть HTML-страницу в откреплённом окне (окне без обычного пользовательского интерфейса браузера, такой как адресная строка, панель закладок и аналогичные элементы), чтобы создать диалогоподобный пользовательский интерфейс:

let createData = {
  type: "detached_panel",
  url: "panel.html",
  width: 250,
  height: 100,
};
let creating = browser.windows.create(createData);

Когда окно больше не нужно, его можно закрыть программно.

Например, после нажатия пользователем кнопки, вы можете передать идентификатор текущего окна в windows.remove():

document.getElementById("closeme").addEventListener("click", () => {
  let winId = browser.windows.WINDOW_ID_CURRENT;
  let removing = browser.windows.remove(winId);
});

Страницы расширения и история

По умолчанию страницы, которые вы открываете таким образом, будут храниться в истории пользователя, как и обычные веб-страницы. Если вы не хотите этого поведения, используйте history.deleteUrl() для удаления записи браузера:

function onVisited(historyItem) {
  if (historyItem.url === browser.extension.getURL(myPage)) {
    browser.history.deleteUrl({ url: historyItem.url });
  }
}

browser.history.onVisited.addListener(onVisited);

Для использования API истории, необходимо запросить «history» разрешение в вашем файле manifest.json.

Дизайн веб-страниц

Подробную информацию о том, как создать дизайн вашей веб-страницы, чтобы он соответствовал стилю Firefox, см. в документации Системы дизайна Acorn и стилей браузера.

Примеры

Репозиторий webextensions-examples на GitHub содержит пример window-manipulator, который реализует несколько вариантов создания окон.

© 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_interface/Extension_pages

Spec-Zone.ru

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