Google chrome extension 通过后台脚本将html元素附加到DOM

Google chrome extension 通过后台脚本将html元素附加到DOM,google-chrome-extension,Google Chrome Extension,我想将相同的html元素附加到当前选项卡的文档DOM中。 我希望这些html扩展元素“永远”存在,所以我希望构建它们一次,并将它们附加到内容脚本加载的每个页面上 我想把createElement放在背景页上。 然后,对于每个web页面加载,我希望内容脚本与后台脚本通信,以便它将它们附加到当前选项卡文档DOM中。 这是好的做法吗? 我的问题是,我不知道如何从后台页面向DOM追加html元素。 你能帮忙吗?这不行。后台页面位于一个进程中,选项卡位于另一个进程中——您不能将对象从一个进程发送到另一个进

我想将相同的html元素附加到当前选项卡的文档DOM中。 我希望这些html扩展元素“永远”存在,所以我希望构建它们一次,并将它们附加到内容脚本加载的每个页面上

我想把createElement放在背景页上。 然后,对于每个web页面加载,我希望内容脚本与后台脚本通信,以便它将它们附加到当前选项卡文档DOM中。 这是好的做法吗? 我的问题是,我不知道如何从后台页面向DOM追加html元素。
你能帮忙吗?

这不行。后台页面位于一个进程中,选项卡位于另一个进程中——您不能将对象从一个进程发送到另一个进程,只能发送文本数据(发送的对象会自动转换为JSON)。因此,您最好的机会是:在后台页面中构建所有内容,然后获取元素的
innerHTML
,并在必要时将此文本发送到内容脚本。然后内容脚本应该创建一个新元素,并将其
innerHTML
设置为它收到的值。

您需要在内容脚本中执行此操作,因为“内容脚本”是在页面和Chrome扩展之间的环境中运行的脚本。请记住,这些脚本将在每次页面加载时加载,并且不会影响已打开的选项卡。 例如,您可以像这样添加外部脚本

var theScript = document.createElement('script');
theScript.src = "http://mybwesite.com/static/js/myscript.js"
document.body.appendChild(theScript);
只要您在manifist中添加了它的权限:

"permissions": [
     "activeTab",
     "tabs",
      "http://*/*", "https://*/*"
  ],
  "content_scripts": [
      {
        "matches": ["<all_urls>"],
        "js": ["js/contentscript.js"]
      }
    ]
“权限”:[
“活动标签”,
“标签”,
“http://*/*”,“https://*/*”
],
“内容脚本”:[
{
“匹配项”:[“”],
“js”:[“js/contentscript.js”]
}
]

感谢Wladimir Palant的回答,但也许您可以告诉我如何构建一个永远存在的界面,并通过图标单击事件将其置于每个html页面之上?非常感谢!!也许您正在寻找类似浏览器操作弹出窗口的东西?