为什么我的浏览器扩展程序在页面加载时不执行任何操作工具箱中除外?

问题描述

我一直在尝试制作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!';