为什么我的浏览器扩展在页面加载时不执行任何操作(除了在工具箱中)?
Why does my browser extension do nothing on page load (except in the toolbox)?
我一直在尝试做一个 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!';
我一直在尝试做一个 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!';