问题描述
我一直在尝试制作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/*"
],
解决方法
尝试一下:
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!';