1

如何在 Twitter 嵌入式时间线上刷新之前设置超时?

我需要更改超时时间以更新我网站上的 Twitter 时间线。目前,twitter API 每秒都会执行一个 ajax 请求来更新时间线。但是在 JS 引擎慢的浏览器(也就是 IE)上,会导致浏览器变慢或者有时会导致浏览器停止工作。

为了解决这个问题,我想在 Twitter 时间轴上刷新之前设置超时

我没有在 API 上找到任何关于如何做到这一点的参考。

我正在使用以下 JS 代码导入时间线:

<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p='https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p "://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>

为了显示时间线,我使用了如下所示的 HTML 代码:

<div class="box-twitter">
<p class="title-box"><span class="icon"></span>WHAT'S HAPPENING ON TWITTER </p>
<a class="twitter-timeline"  href="https://twitter.com/search?q=from:dev include:retweets"  data-widget-id="394816085830025216"><img src="preloader.gif" style="margin-left: 132px; margin-top: 20px;"/></a>

有人知道我该如何解决这个问题?

谢谢。

4

2 回答 2

2

我相信设置 aTweet limit可能是一种选择。

推文限制: To fix the size of a timeline to a preset number of Tweets, use the data-tweet-limit="5" 属性 with any value between 1 and 20 Tweets. The timeline will render the specified number of Tweets from the timeline, expanding the height of the widget to display all Tweets without scrolling. 由于小部件的大小是固定的,因此在使用此选项时它不会轮询更新。

https://dev.twitter.com/docs/embedded-timelines

例如

<a class="twitter-timeline" href="https://twitter.com/twitterapi" data-widget-id="YOUR-WIDGET-ID-HERE" data-chrome="nofooter" data-tweet-limit="3">Tweets by @twitterapi</a>

然后,如果需要,您可以手动更新小部件,方法是删除它们重新插入 html 然后调用。

twttr.widgets.load()

于 2013-11-07T18:20:32.627 回答
2

在 Twitter 提供的 widget.js 文件上进行逆向工程。我找到了一个名为“schedulePolling”的方法,代码如下:

schedulePolling: function(e) {
var t = this;
if (this.pollInterval === null) return;
e = twttr.widgets.poll || e || this.pollInterval || 1e4, e > -1 && window.setTimeout(function() {
    this.isUpdating || t.update(), t.schedulePolling()
}, e)

为了增加超时时间,我在这段代码中添加了一个固定值。

schedulePolling: function(e) {
var t = this;
if (this.pollInterval === null) return;
e = 60000 || e || this.pollInterval || 1e4, e > -1 && window.setTimeout(function() {
    this.isUpdating || t.update(), t.schedulePolling()
}, e)}

我已经替换了twttr.widgets.poll 我想要“60000”的代码;

完成此操作后,使用我的自定义代码保存 widget.js。

因此,在此自定义之后,我修改了导入 Twitter API 的行,将默认值更改为//platform.twitter.com/widgets.js自定义文件的路径my-site/js/customized_widgets.js

这就是结果。

<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p='https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"/my-site/js/customized_widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
于 2013-11-08T19:18:19.180 回答