我认为chrome扩展程序总体来说非常简单且非常强大,但是让我一直感到困惑的一件事是尝试在可能运行代码的各种脚本之间进行通信。当从浏览器操作的“ default_popup”页面中引用该代码时,“背景”的“脚本”属性中的代码以及内容脚本。这些类别的脚本在什么情况下运行,每种脚本如何与其他脚本通信?
3 回答
慕莱坞森
TA贡献1810条经验 获得超4个赞
Google文档包含所有内容,但是很难将所有信息汇总到一起。脚本主要有两种类型:
1.后台脚本可以完全访问Chrome api,但是不能与目标网页进行交互。
2.内容脚本可以相互交互,也可以与网页的DOM交互(但不能与网页的DOM交互),但只能有限地访问Chrome api。
两者都在您加载新页面时运行(除非您使用“匹配”来限制内容脚本的运行位置)。
您可以通过消息传递在两者之间进行通信。通过内容脚本比通过后台脚本更容易完成此操作,因为您需要知道后者的选项卡ID。
其他脚本(browserAction.js,pageAction.js,optionsPage.js)只有其对应的HTML页面打开时(因为如果你在你的浏览器窗口,这是你真的做什么打开网页)上运行。它们在限制和功能方面类似于后台脚本。
尝试避免与页面脚本交互的需要。我所知道的最好方法是通过共享的DOM进行交互(在html注释内用文字编写javascript代码)。但是扩展程序的目标不是为此而设计的,因此您必须包含自己的脚本才能将其执行到网页中。使用内容脚本将script元素写入文档中(它src是
chrome.extension.getURL("myscript.js"),
您需要将其包含
"web_accessible_resources": ["myscript.js"]
在清单中。
添加回答
举报
0/150
提交
取消