我正在开发一个在内容脚本中使用jQuery / Zepto的chrome扩展。现在,扩展程序意味着在每个网站上运行,这意味着在用户打开的每个选项卡上都会加载jQuery / Zepto的副本。
有没有办法在各种内容脚本之间共享jQuery / Zepto对象?
我知道内容脚本可以与后台脚本通信。我希望能够让后台脚本可以访问jQuery对象并返回对每个内容脚本的引用。但我意识到只能在内容和后台脚本之间传递JSON消息。
有没有办法达到我想要的目的?
答案 0 :(得分:9)
不同标签中的内容脚本也无法访问彼此的JavaScript对象。
Chrome支持通过chrome.runtime.sendMessage
+ .onMessage
在内容脚本和/或背景页面之间进行通信。因为所有消息都是JSON序列化的,所以JavaScript对象不能以这种方式“泄露”到其他上下文。
所以:不,你不能与其他标签中的(内容脚本)共享jQuery等对象。
答案 1 :(得分:1)
<强>实施例强>
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["myscript.js","myscript1.js"]
}
]
}
注入了内容脚本["myscript.js","myscript1.js"]
的{{3}}确保myscript1.js
可以访问myscript.js
的所有内容(函数,变量),但是这样阻止两个Individual DOM Environment进行通信。
如果您在Individual DOM Environment中看到了什么限制\要求,要求{strong> Content Scripts 需要message passing才能访问background pages?
请详细说明