Twitter小部件回调

时间:2011-03-30 20:38:21

标签: javascript twitter

如何在呈现Twitter widget时调用回调?

使用他们提供的代码:

TWTR.Widget({data: something}).render().setUser('me').start();

Twitter臭名昭着的服务和频繁的长时间加载。如何在加载TWTR小部件时添加回调,这样我可以在此期间向我的用户显示加载程序?

4 个答案:

答案 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(另一个数组,结果的子集)。