Доступ к текущему документу из фонового сценария действия браузера расширения Firefox

Я создаю кнопку на панели инструментов расширение для Firefox. В моем фоновом скрипте мне нужно получить доступ к document для текущей вкладки при нажатии кнопки панели инструментов.

window в данном контексте это окно для расширения, а не для текущей вкладки. Другие функции, такие как browser.tabs.getCurrent() не работают в фоновых сценариях.

Я знаю, что это возможно, поскольку другие расширения имеют доступ к текущему документу (например, 1Password идентифицирует и заполнит input элементов.)

Примечание. Все предыдущие вопросы по SO об одной и той же функциональности из 2010, 2012 и т. д. больше не имеют значения.


person Chris    schedule 31.12.2019    source источник
comment
Скрипты контента могут взаимодействовать с фоновыми скриптами через сообщения разработчику .mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/   -  person Kris    schedule 12.12.2020
comment
См. vzurczak.wordpress.com/2017/11/23/ для примера   -  person Kris    schedule 12.12.2020


Ответы (1)


Чтобы получить активную вкладку в текущем окне, вы можете использовать tabs.query()

e.g.:

browser.tabs.query({currentWindow: true, active: true})

Вот как получить активную вкладку.

Вкладка отделена от страницы содержимого (веб-страницы). Чтобы взаимодействовать с контекстной страницей, вам нужно будет ввести свой код на страницу.

Например, используя tabs.executeScript().

Поскольку вы вводите в активную вкладку, больше нет необходимости получать активную вкладку отдельно, поскольку tabs.executeScript() будет внедряться в активную вкладку, если tabId опущен.

e.g.:

browser.tabs.executeScript({
  code: `console.log('location:', window.location.href);`
});
person erosman    schedule 01.01.2020
comment
Как мне тогда получить окно/документ этой вкладки? Я ничего не вижу ни в документах, ни в их примерах - person Chris; 01.01.2020