2016-08-26 10 views
0

私はTwitterのtwttr.widgets.createTweetを使用して、ID(initialTweetsはツイートIDのjson)でツイートのリストをページにレンダリングしています。Safariがtwitter createWidgetでPromise.thenを呼び出さない

var initialTweets = <?php echo json_encode($tweets); ?>; 
    $(window).load(function(){ 
     if(initialTweets.length) { 
      for(i = 0; i < initialTweets.length; i++) { 
       var data = initialTweets[i]; 
       var newTweet = document.createElement('div'); 
       twttr.widgets.createTweet(
        data, newTweet, {} 
       ).then(function (el) { 
        $('#tweets').prepend($(el)); 
        var tweets = $('#tweets > twitterwidget'); 
        console.log('Tweets: ' . tweets.length); 
        if (tweets.length > max) { 
         tweets.eq(max).nextAll().remove(); 
        } 
       }); 
      } 
     } 
    }); 

これは、クロム52で正常に動作しますが、Safariで動作していない - 私はいくつかのコンソールロギングを追加する場合、.then関数が呼び出されていないようです。私はTweet要素が作成されていることを知っています。ネットワークインスペクタでiframeが呼び出されているのがわかります。

+0

?すべての関連メッセージ? –

+0

@A.Wolff - または '.catch('ブロック –

+0

私はちょうど '.catch(function(e){console.log(e);})'を追加しましたが、何も記録していません。 @A.Wolffはあなたが何を意味していたのですか?) –

答えて

0

なぜ、サファリに問題があるのでしょうか。

ここでは診断に役立つかもしれない、または永続的な解決策を提供するかもしれないものがあります。各つぶやきのための「ロード...」のメッセージを表示

  • :アイデアは、の可能性を提供し、twttr.widgets.createTweet()を呼び出す前に#tweetsにターゲットのdivを付加することです。
  • 各ツイートごとにエラーメッセージが表示されます。
  • ツイートがオリジナルのinitialTweets配列と同じ順序で表示されるようにします。これは現在のコードでは保証されていません。あなたはエラーコールバックを使用する場合、どのよう
$(window).load(function() { 
    var initialTweets = <?php echo json_encode($tweets); ?>, 
     $tweets = $('#tweets'), 
     loadingMessage = 'loading...'; 
    initialTweets.forEach(function(tweetID) { 
     var $div = $('<div/>').text(loadingMessage).prependTo($tweets); // create and prepend a target div 
     return twttr.widgets.createTweet(tweetID, $div.get(0), {}).then(function(el) { 
      $(el).unwrap(); // remove the prepended target div, leaving the twitter widget in place 
      var $widgets = $tweets.children('twitterwidget'); 
      if ($widgets.length > max) { 
       $widgets.eq(max).nextAll().remove(); 
      } 
     }, function(error) { 
      $div.text(error.message); // for testing/diagnosis 
      // $div.remove(); // for live environment 
      throw error; 
     }); 
    }); 
}); 
関連する問題