Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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
在FacebookJSSDK中使用Jquery_Jquery_Facebook - Fatal编程技术网

在FacebookJSSDK中使用Jquery

在FacebookJSSDK中使用Jquery,jquery,facebook,Jquery,Facebook,我正在使用jquery在我的页面中实现各种功能,包括显示和隐藏div元素 现在,我在母版页中还有facebook JS SDK,用于检查用户是否已注销facebook并进行graph api调用 问题是有时候,facebook的响应需要一段时间,在这段时间内,用户可以看到jquery在$.ready上隐藏的div元素 有没有更好的方法?我认为graph api调用在完成时有一个回调函数。从那里调用jquery代码,而不是$.ready。。所以我终于解决了这个问题。您应该异步加载FB Javasc

我正在使用jquery在我的页面中实现各种功能,包括显示和隐藏div元素

现在,我在母版页中还有facebook JS SDK,用于检查用户是否已注销facebook并进行graph api调用

问题是有时候,facebook的响应需要一段时间,在这段时间内,用户可以看到jquery在$.ready上隐藏的div元素


有没有更好的方法?

我认为graph api调用在完成时有一个回调函数。从那里调用jquery代码,而不是$.ready。。所以我终于解决了这个问题。您应该异步加载FB Javascript SDK,如下所示

<div id="fb-root"></div>
<script>
  window.fbAsyncInit = function() {
    FB.init({appId: 'your app id', status: true, cookie: true,
             xfbml: true});
  };
  (function() {
    var e = document.createElement('script'); e.async = true;
    e.src = document.location.protocol +
      '//connect.facebook.net/en_US/all.js';
    document.getElementById('fb-root').appendChild(e);
  }());
</script>

window.fbAsyninit=函数(){
init({appId:'你的appId',状态:true,cookie:true,
xfbml:true});
};
(功能(){
var e=document.createElement('script');e.async=true;
e、 src=document.location.protocol+
“//connect.facebook.net/en_US/all.js”;
document.getElementById('fb-root').appendChild(e);
}());
有关更多详情,请参阅


我注意到,所有包含FB对象的方法,比如FB.api等,都应该与FB.init在同一个闭包中,否则FB对象是未定义的

如果您想要更干净的方法,请尝试以下方法:

window.fbAsyncInit = function() {
  FB.init({xfbml: true});
};

$(function() {
  $.getScript({url: document.location.protocol +
    '//connect.facebook.net/en_US/all.js'});
}
将此代码内联插入或插入单独的Javascript文件中

注:

  • 本例未定义appIDcookie状态。您可以将它们添加到FBAsyninit
  • 使用JQuery 1.8.2进行测试
  • 我发现#fb rootdiv是不必要的

问题是,我想在调用graph api之前调用jquery代码。问题是graph api调用会导致延迟,我希望我的代码在页面加载后立即执行。我明白了。我的错!1.你如何开始隐藏那些令人讨厌的角色?或2。加载页面后进行图形调用怎么样?因此,您可以使用jquery执行操作,然后开始调用图形。如果没有一些代码示例或网页,这真的很难提供帮助。不,延迟不是需要的。如果你仔细阅读,我想让这发生得更早,基本上在FBJSSDK开始进行api调用之前。若我延迟,那个么用户将看到当前通过在$.ready()中使用hide()方法隐藏的元素。我希望这次我能说得更清楚些。#fb root据称用于某些浏览器的某些跨域情况,与通道文件相同。