2012-03-07 62 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]會。