Страницы расширений
Вы можете включать HTML-страницы в своё расширение для предоставления форм, справки или любого другого контента, необходимого вашему расширению.
Эти страницы также получают доступ к тем же привилегированным 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