2012-03-07 83 views
2

我有页面中有MooTools在页面中使用,我也加了Facebook的sdk。MooTools正在搞乱Facebook的JavaScript SDK

<script src="http://code.jquery.com/jquery-1.7.1.min.js" type="text/javascript"></script> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/mootools/1.3.0/mootools-yui-compressed.js"></script> 

而且在身体中就是这样。

<script src="http://connect.facebook.net/en_US/all.js"></script> 
<script> 
    FB.init({ 
     appId  : 'myappid', 
     status  : true, // check login status 
     cookie  : true, // enable cookies to allow the server to access the session 
     xfbml  : true, // parse XFBML 
     oauth  : true 
    }); 
</script> 

用于发送FB邀请请求我使用。

FB.ui({ 
      method: 'apprequests', 
      message: 'tests messages', 
      //title: 'Invite you friend to MyApp', 
      to: fbid 
     },function(r){ console.log(r); }); 

但是,这给了我all.js文件中的“a为空”。如果我删除MooTools文件,everthing可以正常工作。但我需要MooTools。我该如何解决这个问题?请帮忙吗?

+0

这篇文章可能会帮助http://stackoverflow.com/q/392334/778687 – tusar 2012-03-07 09:44:40

+0

谢谢......它只是解决$冲突的问题。虽然我尝试过,但这并不能帮助我。 – 2012-03-07 10:32:22

+1

Ops ..我意识到问题不是jQuery。它因为Moo工具。任何帮助 – 2012-03-07 10:34:16

回答

0

你加载mootools AFTER jQuery。这意味着它不会接管$并且将回退到它自己的noConflict模式,选择器仅保留为document.id

要么所有的mootools代码都需要使用它,要么使用在mootools中使用$document.id的简单闭合模式。

$; // jQuery 
(function($) { 
    $; // mootools 
})(document.id); 

使用mootools时需要考虑的其他事项:它是原型的。确保你不要做愚蠢的东西,例如... ...在没有hasOwnProperty检查的数组循环中(不好的想法开始,但它比人们想象的更普遍)

除了上述,您需要将其追踪到失败的特定位代码。它可能是你正在传递jQuery函数到什么mootools认为是一个元素,例如,$('foo')当jQuery不会返回元素对象。即使$('#foo')也不行,但$('#foo')[0]会。