chrome扩展:在内容脚本和后台脚本之间共享对象

时间:2012-12-03 10:07:46

标签: google-chrome-extension

我正在开发一个在内容脚本中使用jQuery / Zepto的chrome扩展。现在,扩展程序意味着在每个网站上运行,这意味着在用户打开的每个选项卡上都会加载jQuery / Zepto的副本。

有没有办法在各种内容脚本之间共享jQuery / Zepto对象?

我知道内容脚本可以与后台脚本通信。我希望能够让后台脚本可以访问jQuery对象并返回对每个内容脚本的引用。但我意识到只能在内容和后台脚本之间传递JSON消息。

有没有办法达到我想要的目的?

2 个答案:

答案 0 :(得分:9)

不同标签中的内容脚本也无法访问彼此的JavaScript对象。

Chrome支持通过chrome.runtime.sendMessage + .onMessage在内容脚本和/或背景页面之间进行通信。因为所有消息都是JSON序列化的,所以JavaScript对象不能以这种方式“泄露”到其他上下文。

所以:不,你不能与其他标签中的(内容脚本)共享jQuery等对象。

答案 1 :(得分:1)

Execution environment的{p> Content Scripts确保内容脚本可以相互通信

<强>实施例

"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

请详细说明