我正在使用jquery在我的页面中实现各种东西,其中包括显示和隐藏div元素。在facebook上使用jquery JS SDk
现在我也在主页面上有Facebook JS SDK来检查用户是否已经登出Facebook并进行图形API调用。
问题是,有时需要一段时间才能从Facebook来响应,而在这段时间内,用户可以看到jQuery在$ .ready中隐藏的div元素。
任何想法如何更好地?
我正在使用jquery在我的页面中实现各种东西,其中包括显示和隐藏div元素。在facebook上使用jquery JS SDk
现在我也在主页面上有Facebook JS SDK来检查用户是否已经登出Facebook并进行图形API调用。
问题是,有时需要一段时间才能从Facebook来响应,而在这段时间内,用户可以看到jQuery在$ .ready中隐藏的div元素。
任何想法如何更好地?
好吧..所以我终于能够解决问题调用jQuery代码。你应该异步加载的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>
有关详细信息,请参阅http://developers.facebook.com/docs/reference/javascript/
一件事我注意到,包含FB对象的所有方法,如FB.api等应在与FB.init相同的闭包中,或者FB对象未定义。
我认为图表API调用有一个回调函数,当他们完成。从那里,而不是$。就绪
不,延迟不是需要的。如果您仔细阅读,我希望在早些时候让FB发生,基本上在FB JS Sdk开始进行API调用之前。如果我延迟,那么用户将在$ .ready()中使用hide()方法看到目前隐藏的元素。我希望我这次更清楚。 – shashi 2010-09-12 17:52:40
如果你想有一个更清洁方法,试试这个:
window.fbAsyncInit = function() {
FB.init({xfbml: true});
};
$(function() {
$.getScript({url: document.location.protocol +
'//connect.facebook.net/en_US/all.js'});
}
插入此代码内联的或者在一个单独的JavaScript文件。
注:
#fb-root声称被用于特定浏览器的某些跨域情况,与频道文件相同。 – 2012-11-27 15:42:50
好的事情是我想在图形api调用之前调用我的jquery代码。问题是图形API调用导致延迟,我希望我的代码尽快执行页面加载。 – shashi 2010-09-12 17:35:04
我明白了。我的错! 1.你如何开始隐藏的有问题的div? 或 2.加载页面后,如何调用图形?所以你要用jquery做什么,然后开始调用图表。 没有一些代码示例或网页,它真的很难提供帮助。 – 2010-09-13 13:59:05