8

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

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

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

有什么方法可以实现我想要的吗?

4

2 回答 2

9

不同选项卡中的内容脚本也无法访问彼此的 JavaScript 对象。

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

所以:不,您不能与其他选项卡(内容脚本中的)共享对象,例如 jQuery。

于 2012-12-04T13:40:06.550 回答
1

内容脚本执行环境确保内容脚本可以相互通信

前任:

"content_scripts": [
    {
      "matches": ["<all_urls>"],
      "js": ["myscript.js","myscript1.js"]
    }
  ]
}

注入内容脚本的Individual DOM Environment确保可以访问 的所有内容(函数、变量),但这会阻止两个Individual DOM Environment的通信。["myscript.js","myscript1.js"]myscript1.jsmyscript.js

话虽如此,您在内容脚本中看到的什么限制\要求要求消息传递需要后台页面来访问注入页面的 DOM 的要求?

请详细说明

于 2012-12-03T10:38:15.207 回答