2015-09-11 38 views
1

如果页面带有jQuery,那么它将有两个jQuery脚本。如果另一个扩展也加载jQuery,那么在同一页面上将会有三个jQuery脚本。我觉得这有点疯狂。你怎么看?谢谢。我应该避免在Chrome扩展的内容脚本中使用jQuery吗?

这是给我留下了上述印象的段落。

如果您的扩展需要与网页进行交互,那么它需要一个 内容脚本。内容脚本是一些在 中执行的JavaScript,该JavaScript已经加载到浏览器中的页面的上下文中。 将 内容脚本视为该加载页面的一部分,而不是作为其打包的 扩展的一部分(其父扩展名)。

https://developer.chrome.com/extensions/overview#arch

+0

记住,jQuery的本身有*众多*不同版本,同时设计有出库工作[即定义'$']不太可能被设计为与其自身的不同版本一起工作。在Chrome扩展中,你可以检查jQuery是否已经加载? –

+0

因此,内容脚本无法在原始页面中调用JavaScript函数。但它可以处理原始页面上的DOM元素。 换句话说,内容脚本无法在原始页面中看到jQuery。 – ffmaer

回答

5

当内容脚本注入网页,它访问页面的DOM,但还没有访问页面的JS对象。反之亦然,页面无法访问内容脚本的变量。

当您通过内容脚本注入jQuery时,它将填充扩展的window对象(具有2个属性 - window.$window.jQuery)。只有你的扩展才能访问它。

原始页面的window对象可能有它自己的jQuery,它们不会相互冲突。

出于调试目的的Chrome允许你切换JS背景下开发工具:

enter image description here

相关问题