Jquery Mootools 冲突

发布于 2024-12-21 16:53:22 字数 1238 浏览 0 评论 0原文

可能的重复:
jQuery 和 MooTools 冲突

我在这里遇到了一些麻烦,我正在加载 jQuery,如果它尚未加载以运行我的脚本。我的脚本被插入到其他人网站的正文标记中的某个位置。 我的问题是,jquery 仅通过加载它(jquery)就与 mootools 发生冲突。

这是我的脚本:

var attemptCount=0;

if(typeof jQuery=='undefined') {
    var script=document.createElement('script');
    script.type='text/javascript';
    script.src='https://ajax.googleapis.com/ajax/.../1.6.2/jquery.min.js';
    document.getElementsByTagName('head')[0].appendChild(script);
}
function init(){
    if(arguments.callee.done) return;
    if(typeof jQuery!='undefined'){
         jQuery.noConflict();
         arguments.callee.done=true;
         // do some jquery stuff i.e. jQuery('...').etc...
    }
}
function waitForJQuery(){
    if(typeof jQuery!='undefined'){
        init();
        return;
    }
    if(attemptCount<100){
        setTimeout(waitForJQuery,100);
    }
    return;
}
if(document.addEventListener){
     document.addEventListener("DOMContentLoaded",init,false);
}
else if(document.attachEvent){
     waitForJQuery();
}
window.onload=init;

任何帮助将不胜感激。

Possible Duplicate:
jQuery and MooTools Conflict

I'm running into some trouble here, I'm loading jQuery if it hasn't already been loaded in order to run my script. My script is inserted somewhere in the body tag on someone else's site. My problem is that jquery conflicts with mootools just by loading it (jquery).

Here is my script :

var attemptCount=0;

if(typeof jQuery=='undefined') {
    var script=document.createElement('script');
    script.type='text/javascript';
    script.src='https://ajax.googleapis.com/ajax/.../1.6.2/jquery.min.js';
    document.getElementsByTagName('head')[0].appendChild(script);
}
function init(){
    if(arguments.callee.done) return;
    if(typeof jQuery!='undefined'){
         jQuery.noConflict();
         arguments.callee.done=true;
         // do some jquery stuff i.e. jQuery('...').etc...
    }
}
function waitForJQuery(){
    if(typeof jQuery!='undefined'){
        init();
        return;
    }
    if(attemptCount<100){
        setTimeout(waitForJQuery,100);
    }
    return;
}
if(document.addEventListener){
     document.addEventListener("DOMContentLoaded",init,false);
}
else if(document.attachEvent){
     waitForJQuery();
}
window.onload=init;

Any help would be much appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

转角预定愛 2024-12-28 16:53:22

我相信 jQuery 需要在 MooTools 之前初始化,因为 $ 是一个别名,并且 jQuery 能够解除绑定,如果考虑到您的情况,这不太难的话,可能值得一试。

 <p>jQuery sets this paragraph's color to red but MooTools sets the border color.</p>
  <script type="text/javascript" src="jquery-1.x.x.js"></script>
  <script type="text/javascript">
    //no conflict jquery
    jQuery.noConflict();
    //jquery stuff
    (function($) {
      $('p').css('color','#ff0000');
    })(jQuery);
  </script>
  <script type="text/javascript" src="moo1.x.js"></script>
  <script type="text/javascript">
    //moo stuff
    window.addEvent('domready',function() {
      $('p').setStyle('border','1px solid #fc0');
    });
  </script>

来源:http://davidwalsh.name/jquery-mootools

I believe jQuery needs to be initialised prior to MooTools as the $ is an alias and jQuery has the ability to unbind this, probably worth a try if it isn't too difficult to do given your circumstance.

 <p>jQuery sets this paragraph's color to red but MooTools sets the border color.</p>
  <script type="text/javascript" src="jquery-1.x.x.js"></script>
  <script type="text/javascript">
    //no conflict jquery
    jQuery.noConflict();
    //jquery stuff
    (function($) {
      $('p').css('color','#ff0000');
    })(jQuery);
  </script>
  <script type="text/javascript" src="moo1.x.js"></script>
  <script type="text/javascript">
    //moo stuff
    window.addEvent('domready',function() {
      $('p').setStyle('border','1px solid #fc0');
    });
  </script>

Source: http://davidwalsh.name/jquery-mootools

躲猫猫 2024-12-28 16:53:22

您使用的 mootools 版本是什么? Mootools 将“自动交出”美元。

您是否有使用 $ 编写的 jQuery 和 mootools 代码?

如果是这样,您将需要至少在一种语言中手动查找美元符号的每个实例,并替换为以下内容:

对于 jQuery $() 变为 jQuery()

对于 Mootools $() 变为 document.id()
// 仅供参考,这是自 1.3 以来 moo Core 及更多版本中的首选编码模式

希望这会有所帮助!

PS如果你完成这一步就不会发生冲突:)

What mootools version are you using? Mootools will "automatically surrender" the $.

Do you have code for both jQuery and mootools written that is using the $?

If so you will need to manually find evey instance of the dollar sign in at least one of the languages and replace with the following

For jQuery $() becomes jQuery()

For Mootools $() becomes document.id()
// FYI this is the preferred coding pattern in moo Core and More since 1.3

Hope this helps!

PS if you complete this step there will be no conflicts :)

滥情空心 2024-12-28 16:53:22

您可以尝试以下方法:

// Add jQuery
var GM_JQ = document.createElement('script');
GM_JQ.src = "http://jquery.com/src/jquery-latest.js";
GM_JQ.type = "text/javascript";
document.getElementsByTagName('head')[0].appendChild(GM_JQ);

// Check if jQuery's loaded.

function GM_wait() {
    if(typeof unsafeWindow.jQuery == 'undefined') { window.setTimeout(GM_wait,100); }
else { $ = unsafeWindow.jQuery; letsJQuery(); }
}

GM_wait();

// All your GM code must be inside this function.
function letsJQuery() {

alert("cheers");

}

here a approach you can try:

// Add jQuery
var GM_JQ = document.createElement('script');
GM_JQ.src = "http://jquery.com/src/jquery-latest.js";
GM_JQ.type = "text/javascript";
document.getElementsByTagName('head')[0].appendChild(GM_JQ);

// Check if jQuery's loaded.

function GM_wait() {
    if(typeof unsafeWindow.jQuery == 'undefined') { window.setTimeout(GM_wait,100); }
else { $ = unsafeWindow.jQuery; letsJQuery(); }
}

GM_wait();

// All your GM code must be inside this function.
function letsJQuery() {

alert("cheers");

}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文