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