#firefox-addon #browser-extension
#firefox-addon #расширение браузера
Вопрос:
Я пытался создать расширение Firefox. Я добился успеха в выполнении действий после взаимодействия с пользователем (например, действия браузера). Но я хочу, чтобы мое расширение делало что-то без взаимодействия с пользователем. Но что бы я ни делал, я ничего не могу добиться при загрузке страницы. Вот мой супер сокращенный код:
manifest.json
{
"name": "Test",
"version": "0.1",
"manifest_version": 2,
"background": {
"scripts": ["test.js"]
}
}
test.js
document.addEventListener("DOMContentLoaded", init);
function init() {
document.body.innerHTML = "Hello world!";
}
Что я здесь делаю не так? Это работает в панели инструментов, но не где-либо еще!
Я также пытался добавить разрешения хоста, подобные этому:
"permissions": [
"*://*.facebook.com/*"
],
Ответ №1:
Попробуйте это:
manifest.json
{
"name": "Test",
"version": "0.1",
"manifest_version": 2,
"background": {
"scripts": ["background.js"]
},
"permissions": ["webNavigation", "*://*.facebook.com/*"]
}
background.js
browser.webNavigation.onDOMContentLoaded.addListener(handleOnDOMContentLoaded, {
url: [{ hostEquals: 'www.facebook.com' }],
});
function handleOnDOMContentLoaded({ tabId }) {
browser.tabs.executeScript(tabId, { file: 'test.js' });
}
test.js
document.body.innerHTML = 'Hello world!';
Комментарии:
1. Спасибо, но мне действительно нужно использовать функцию insertCSS в моем коде, и для этого она должна быть в фоновом скрипте. Это невозможно?
2. Возможно, я обновил код. Вы также можете добавить
insertCSS
handleOnDOMContentLoaded
.