1

Twitter 埋め込みタイムラインの更新前にタイムアウトを設定するにはどうすればよいですか?

サイトの Twitter タイムラインを更新するには、タイムアウト時間を変更する必要があります。現在、twitter API は 1 秒ごとに 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

リバース エンジニアリングを行った後、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 に答える