如何在呈现Twitter widget时调用回调?
使用他们提供的代码:
TWTR.Widget({data: something}).render().setUser('me').start();
Twitter臭名昭着的服务和频繁的长时间加载。如何在加载TWTR小部件时添加回调,这样我可以在此期间向我的用户显示加载程序?
答案 0 :(得分:11)
我不得不在Twitter上搜索图书馆的作者,但是there is a ready
callback:
E.g。
new TWTR.Widget({
id: 'twitter-feed',
version: 2,
.
.
.
features: {
scrollbar: false,
.
.
},
ready: function() {
jQuery("div#twitter-load").remove();
}
}).render().setUser('me').start();
答案 1 :(得分:1)
小部件具有_rendered
属性。
我在jsfiddle上做了一个例子。请注意,没有回调,您必须轮询它以检查它是否已呈现。此外,您必须在创建变量时将其分配给变量,以便可以访问_rendered
属性。
我通过jsbeautifying脚本找到了这个,所以它可能不是100%值得信赖且绝对不受支持。
答案 2 :(得分:1)
使用ash的“就绪”功能发现,我需要添加一些轮询,以便我只删除加载消息,如果任何推文实际加载。为了测试这个,我会将以下内容添加到我的hosts文件中,以模拟获取推文的错误:
127.0.0.1 api.twitter.com
请注意,我的轮询仅执行10次,间隔为200毫秒。这是因为当推文似乎在前2秒内加载时(如果它们将要加载),我不希望代码无限期地轮询。您可以根据自己的情况定制这些值。
function pollForTweets() {
if (jQuery("div#twitter-feed").find("div.twtr-tweet").length > 0) {
jQuery("div#twitter-load").remove();
return;
}
pollForTweets.pollCounter = pollForTweets.pollCounter || 0;
if (pollForTweets.pollCounter < 10) {
pollForTweets.pollCounter++;
setTimeout('pollForTweets()', 200);
}
}
new TWTR.Widget({
id: 'twitter-feed',
version: 2,
.
.
.
features: {
scrollbar: false,
loop: false,
live: false,
behavior: 'all'
},
ready: function () {
pollForTweets();
}
}).render().setUser('twitter').start();
答案 3 :(得分:0)
除了ready()回调和_rendered属性(感谢jasie和harpyon)之外,还有大量其他有用的,未记录的属性。例如。结果(数组,因此results.length)和showsResults(另一个数组,结果的子集)。