Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:My fbAsyncInit()方法从未被调用_Javascript_Facebook_Fbconnect_Fbjs - Fatal编程技术网

Javascript:My fbAsyncInit()方法从未被调用

Javascript:My fbAsyncInit()方法从未被调用,javascript,facebook,fbconnect,fbjs,Javascript,Facebook,Fbconnect,Fbjs,我正在从Facebook的开发者网站上复制代码,FBAsyncint()方法永远不会启动。我也读过,我用了很多不同的方法对代码进行了调整,但我无法启动该方法。你的想法 另外,值得一提的是,当我尝试运行这段代码和Chrome(在Mac上)并运行Firebug lite时,我得到一个错误,上面写着“Firebug lite无法加载到此页面” 这是密码 <html> <head> </head> <body> <div id="fb-root"&g

我正在从Facebook的开发者网站上复制代码,FBAsyncint()方法永远不会启动。我也读过,我用了很多不同的方法对代码进行了调整,但我无法启动该方法。你的想法

另外,值得一提的是,当我尝试运行这段代码和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>

window.fbAsyninit=函数(){
FB.init({
appId:'1234567890',//应用程序ID
channelUrl:'//localhost/test.html',//通道文件
状态:true,//检查登录状态
cookie:true,//启用cookie以允许服务器访问会话
xfbml:true//解析xfbml
});
警报(“此语句也不会被调用”);
};
//异步加载SDK
(职能(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);
}(文件);

同步加载有问题吗

    <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>

FB.init({
appId:'你的应用程序ID',
channelUrl:'//WWW.YOUR_DOMAIN.COM/channel.html',//频道文件
状态:true,//检查登录状态
cookie:true,//启用cookie以允许服务器访问会话
xfbml:true//解析xfbml
});

由于您的文件都称为test.html,而channelUrl应该是test.html,因此您正在创建一个循环引用。对于正确的channelUrl,它应该只包含一行

通道文件解决了跨域通信的一些问题 在某些浏览器中。channel.html文件的内容可以是 一行:

重要的是,通道文件的缓存时间应尽可能长 可能的提供此文件时,必须发送有效的Expires标头 有效期长。这将确保通道文件是正确的 由浏览器缓存,这对于流畅的用户体验非常重要。 如果没有适当的缓存,跨域通信将变得非常困难 速度慢,用户体验将严重退化。简单的 在PHP中实现这一点的方法是:


channelUrl参数是可选的,但建议使用。提供 通道文件可以帮助解决三个特定的已知问题。第一, 包含跨帧通信的代码的页面可能会导致社交冲突 插件显示为空白,没有channelUrl。第二,如果没有 提供channelUrl,页面包括自动播放音频或视频 在视频中,用户可能会听到两个音频流,因为页面具有 已在后台为跨域第二次加载 沟通。第三,通道文件将防止包含额外的 点击服务器端日志。如果未指定channelUrl,则 可以删除包含fb_xd_半身像或fb_xd_片段的页面视图 从日志中提取参数以确保正确计数

channelUrl必须是与上的页面匹配的完全限定URL 其中包括SDK。换句话说,通道文件域 如果您的网站是使用www提供服务的,并且如果您修改 您必须在页面上创建相同的document.domain 更改channel.html文件中的内容。协议还必须 匹配。如果您的页面是通过https提供的,那么您的channelUrl也必须是 https。记住将脚本src的匹配协议用作 好。上面的示例代码使用与协议相关的URL,这些URL应该 正确处理大多数https案例


这个答案可能太晚了,而且在很多情况下都没有帮助,但是,我发现我的Firefox浏览器在做了一些体面的工作之后,显然有点疯狂,并导致了那个确切的错误。。。只需重新启动该死的东西

您应该更改:

 js.src = "//connect.facebook.net/en_US/all.js";
致:


我也有同样的问题。在异步加载之前,我似乎在其他地方加载了JavaScript库
//connect.facebook.net/en_US/all.js

这可能让事情有点混乱


我删除了“过早加载”标记定义,现在我很好。

请更改您的应用程序ID,然后开始工作

  <script>
  window.fbAsyncInit = function() {
    FB.init({
      appId            : 'your-app-id',
      autoLogAppEvents : true,
      xfbml            : true,
      version          : 'v2.11'
    });
  };

  (function(d, s, id){
     var js, fjs = d.getElementsByTagName(s)[0];
     if (d.getElementById(id)) {return;}
     js = d.createElement(s); js.id = id;
     js.src = "https://connect.facebook.net/en_US/sdk.js";
     fjs.parentNode.insertBefore(js, fjs);
   }(document, 'script', 'facebook-jssdk'));
</script>

window.fbAsyninit=函数(){
FB.init({
appId:'您的应用程序id',
自动假肢:对,
xfbml:是的,
版本:“v2.11”
});
};
(功能(d、s、id){
var js,fjs=d.getElementsByTagName[0];
if(d.getElementById(id)){return;}
js=d.createElement;js.id=id;
js.src=”https://connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js,fjs);
}(文档“脚本”、“facebook jssdk”);

您的文件名为test.html吗?是的,有问题吗?是否存在任何js错误?您正在哪个浏览器中测试它?尝试更改一些不存在的src,然后检查浏览器中的错误日志。谢谢,DMCS,我删除了可选的channelUrl参数,这个方法仍然不会触发。你的想法?尝试删除两个结尾标记中的一个作为额外标记,可能会导致浏览器不喜欢它。是的,我修复了它,它没有帮助。你确定,你唯一的html是你发布的内容吗??浏览器上是否关闭了javascript?是的,当我将代码调整为与同步代码类似时,警报方法仍然不会触发。有什么好处?只有当我删除FB.init()方法时,警报方法fireI不知道。。。这家伙是异步加载的,它似乎对他很有用:顶部的代码是有效的,如果你读了答案,他只需要输入正确的代码appid@BeachRunnerJoe看起来他是在将下面的脚本附加到fb根div,而不是头上。@MikeyG此脚本是
 js.src = "http://connect.facebook.net/en_US/all.js";
  <script>
  window.fbAsyncInit = function() {
    FB.init({
      appId            : 'your-app-id',
      autoLogAppEvents : true,
      xfbml            : true,
      version          : 'v2.11'
    });
  };

  (function(d, s, id){
     var js, fjs = d.getElementsByTagName(s)[0];
     if (d.getElementById(id)) {return;}
     js = d.createElement(s); js.id = id;
     js.src = "https://connect.facebook.net/en_US/sdk.js";
     fjs.parentNode.insertBefore(js, fjs);
   }(document, 'script', 'facebook-jssdk'));
</script>