我正在Facebook开发者网站上的this page复制代码,fbAsyncInit()方法永远不会触发。我还阅读了this page,我已经通过几种不同的方式调整了代码,我无法解决这个问题。你的意见?
此外,值得一提的是,当我尝试运行此代码和Chrome(在Mac上)并运行Firebug lite时,我收到一条错误消息“无法在此页面中加载Firebug Lite”
这是代码......
<html>
<head>
</head>
<body>
<div id="fb-root"></div>
<script type="text/javascript">
window.fbAsyncInit = function() {
FB.init({
appId : '1234567890', // App ID
channelUrl : '//localhost/test.html', // Channel File
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
alert("this statement never gets called either");
};
// Load the SDK Asynchronously
(function(d){
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
d.getElementsByTagName('head')[0].appendChild(js);
}(document));
</script>
</script>
</body>
</html>
答案 0 :(得分:7)
我遇到了同样的问题。在异步加载之前,似乎我在其他地方加载了JavaScript库//connect.facebook.net/en_US/all.js
。
这可能会让人感到困惑。
我删除了过早的加载标记定义,现在我很好。
答案 1 :(得分:5)
您是否遇到同步加载问题?
<script src="//connect.facebook.net/en_US/all.js"></script>
<script>
FB.init({
appId : 'YOUR_APP_ID',
channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
</script>
答案 2 :(得分:5)
你应该改变:
js.src = "//connect.facebook.net/en_US/all.js";
为:
js.src = "http://connect.facebook.net/en_US/all.js";
答案 3 :(得分:1)
这个答案可能为时已晚,而且对于很多情况都不会有帮助,但我发现我的Firefox浏览器经过一些体面的工作后显然有点疯狂并导致错误...只是重启该死的东西
答案 4 :(得分:0)
由于您的文件都称为test.html,而channelUrl应该是test.html,因此您创建的是循环引用。对于正确的channelUrl,它应该只包含一行
<script src="//connect.facebook.net/en_US/all.js"></script>
http://developers.facebook.com/docs/reference/javascript/
频道文件解决了跨域通信的一些问题 在某些浏览器中。 channel.html文件的内容可以是 一行:
<script src="//connect.facebook.net/en_US/all.js"></script>
通道文件的缓存非常重要 可能。提供此文件时,您必须发送有效的Expires标头 期限很长。这将确保通道文件 浏览器缓存,这对于流畅的用户体验非常重要。 如果没有适当的缓存,跨域通信将变得非常 缓慢,用户将遭受严重退化的经历。一个简单的 在PHP中执行此操作的方法是:
<?php $cache_expire = 60*60*24*365; header("Pragma: public"); header("Cache-Control: max-age=".$cache_expire); header('Expires: ' . gmdate('D, d M Y H:i:s', time()+$cache_expire) . ' GMT'); ?> <script src="//connect.facebook.net/en_US/all.js"></script>
channelUrl参数是可选的,但建议使用。提供一个 通道文件可以帮助解决三个特定的已知问题。第一, 包含跨帧通信的代码的页面可能会导致社交 没有channelUrl的插件显示为空白。第二,如果没有 提供channelUrl,页面包括自动播放音频或 视频,用户可能会听到两个音频流,因为页面有 已在背景中第二次加载跨域 通讯。第三,通道文件将阻止包含额外的 点击服务器端日志。如果你没有指定channelUrl,那么你 可以删除包含fb_xd_bust或fb_xd_fragment的页面视图 日志中的参数以确保正确计数。
channelUrl必须是与页面匹配的完全限定URL 你包括SDK。换句话说,通道文件域 如果您的网站使用www提供,并且如果您修改,则必须包含www 您的网页上的document.domain必须创建相同的document.domain 也改变了channel.html文件。协议也必须 比赛。如果您的网页是通过https投放的,那么您的channelUrl也必须是 HTTPS。请记住使用脚本src的匹配协议 好。上面的示例代码使用协议相对URL 正确处理大多数https案例。
答案 5 :(得分:0)
请更改您的应用ID然后开始工作
"workbench.colorCustomizations": {
"tab.activeBackground": "#6bdc6b",
}