Uncaught ReferenceError: _onloadHook is not defined
为什么呢?我的代码如下:
<!DOCTYPE html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml">
<html>
<head>
<script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script>
<script type="text/javascript">
//Initialize facebook
FB.init({
appId : '12345',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true, // parse XFBML
channelUrl : 'http://www.abc.com/channel.html', // channel.html file
});
</script>
</head>
<body>
<div id="fb-root"></div>
<fb:send href="http://abc.com/blah" font="lucida grande" ref="codes_popup"></fb:send>
<fb:send href="http://abc.com/blah" font="lucida grande" ref="codes_popup"></fb:send>
</body>
</html>
编辑:当我有多个时会发生这种情况。当我只有一个“发送”按钮时,错误就不存在了。
对于每个额外的“发送”按钮,都会发生错误。
答案 0 :(得分:1)
这是Facebook平台中的一个错误;它已被报告为bug #20041。
答案 1 :(得分:0)
将Facebook JS库和JS代码脚本放在 fb-root
div下:
<!DOCTYPE html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml">
<html>
<head>
</head>
<body>
<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script type="text/javascript">
//Initialize facebook
FB.init({
appId : 'XXX',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true, // parse XFBML
channelUrl : 'http://www.abc.com/channel.html', // channel.html file
});
</script>
<fb:send href="http://abc.com/blah" font="lucida grande" ref="codes_popup"></fb:send>
</body>
</html>
答案 2 :(得分:0)
我今天收到了完全相同的错误。
正如我们提到的那样,FB文档说你需要在<script>
下放置FB <div id="fb-root"></div>
标签。但是,在他的示例和FB文档中,他们将脚本直接放在<div id="fb-root"></div>
下。我这样做,仍然得到OP提到的错误。我终于能够通过将FB <script>
标记移动到页面的最底部,就在结束</body>
标记之前解决问题。我相信发生的事情是我的其他一些脚本干扰了FB脚本的加载。希望有所帮助。
答案 3 :(得分:0)
您应该使用升级的异步方法调用facebook javascript。这将确保加载整个DOM,以便fb:root已经在页面上。
http://developers.facebook.com/docs/reference/javascript/FB.init/
<script>
window.fbAsyncInit = function() {
FB.init({
appId : 'YOUR APP ID',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true, // parse XFBML
channelUrl : 'http://www.yourdomain.com/channel.html', // Custom Channel URL
oauth : true //enables OAuth 2.0
});
};
(function() {
var e = document.createElement('script');
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
}());
</script>
同样非常重要的是添加对OAuth 2.0 http://developers.facebook.com/blog/post/525/
的支持oauth : true
截至10月1日,如果您没有,您的应用将无法正常运行。