2

我的页面中使用了 MooTools,并且我也添加了 facebook 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 is null”。如果我删除 MooTools 文件,一切正常。但我需要 MooTools。我怎样才能解决这个问题?请问有什么帮助吗?

4

1 回答 1

0

你在 jquery 之后加载 mootools。这意味着它不会接管$并且会退回到它自己的 noConflict 模式,选择器保持别名为document.idonly。

要么你所有的 mootools 代码都需要使用它,要么使用在 mootools 中提供$to使用的简单闭包模式document.id

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

使用 mootools 时要考虑的其他事项:它是原型。确保你不要做愚蠢的事情,比如 for ... in Arrays 上的循环,没有检查 hasOwnProperty (一开始是个坏主意,但它比人们想象的更普遍......)

除了上述之外,您还需要将其追踪到失败的特定代码位。可能是您将 jQuery 函数传递给 mootools 认为的元素,例如,$('foo')当 jQuery 不会返回元素对象时。即使$('#foo')不会工作,但$('#foo')[0]会。

于 2012-03-08T10:56:25.100 回答