Chrome扩展:背景文件中的jQuery.js冲突与网站中的插件冲突

时间:2012-03-05 19:36:45

标签: javascript jquery google-chrome-extension

我在back_page中包含jQuery,就像这样,

 <script type="text/javascript" src="libs/jquery.js"></script>

问题在于:

在使用jQuery插件的网站中(使用jQuery.extend方法),在安装我的扩展程序时它们不起作用。

我想这是因为我将jQuery.js放在'他们的'jQuery.js'文件中,并且所有.extend都不起作用。

所以,我只想在不可用的时候添加jQuery.js。所以,我尝试添加这样的jQuery,

<script type="text/javascript">
        if (typeof jQuery == 'undefined') {
            var script = document.createElement('script');
            script.type = "text/javascript";
            script.src = "libs/jquery.js";
            document.getElementsByTagName('head')[0].appendChild(script);
        }
    </script>

但没有运气。

有人可以建议我在后台页面添加jQuery.js文件的好方法。

2 个答案:

答案 0 :(得分:1)

我非常喜欢你的方法,但我建议你在load事件监听器中包含你的声明:

if (window.addEventListener) {
  window.addEventListener('load', init, false);
} else if (window.attachEvent) { // for IE8 and below
  window.attachEvent('onload', init);
}

function init() {
  if (typeof jQuery === 'undefined') {
    var script = document.createElement('script');
    script.type = "text/javascript";
    script.src = "libs/jquery.js";
    document.getElementsByTagName('head')[0].appendChild(script);
  }
}

我认为问题可能是在您询问jQuery是否为对象时,尚未加载DOM。

,您可以通过content_scripts下的清单文件加载jQuery:http://code.google.com/chrome/extensions/dev/content_scripts.html

答案 1 :(得分:0)

稍后找到答案,

否则 jQuery.nocConflict

jQ = jQuery.noConflict 并将$替换为jQ,解决了这个问题。

结论: content_scripts 会干扰网页javascripts。