2016-10-19 69 views
0

我試圖檢測我的代碼中的「閃存過期」錯誤。玩家對象存在,但沒有回調被調用。YouTube的iFrame API:沒有準備好的電話,沒有錯誤的電話

var player = new YT.Player('pp-yt-player-div-id', 
    { 
     height: '50', 
     width: '50', 
     playerVars: 
     { 
      controls: 0, 
      showinfo: 0, 
      rel: 0 
     }, 
     events: 
     { 
      onReady: function(event) 
      { 
       this.onReady(); 
      }.bind(this), 
      onStateChange: function(event) 
      { 
       this.onStateChange(event); 
      }.bind(this), 
      onError: function(event) 
      { 
       console.log('on error: '+event); 
       this.onError(event); 
      }.bind(this) 
     } 
    }); 

有沒有一種很好的方法來檢測這種情況下的錯誤?

+0

_「有沒有發現在這種情況下‘閃速過時’錯誤的好辦法?」 _不因爲你的代碼不涉及任何Flash內容。如果你的HTML代碼沒有嵌入**。swf **文件,那麼你不使用Flash ... Youtube使用視頻標籤,JS,CSS和PHP ... –

+0

所有youtube視頻都對玩家說得很對「閃光過時了。」無論錯誤是什麼,YouTube的iframe API都不允許我檢測它。 – jpro

+0

文本是否可選?如果是的話,也許只是在iframe中進行「Flash過期」字符串搜索?使用哪個瀏覽器?哪個測試鏈接?我住在Chrome瀏覽器,所以我從來沒有看到這樣的問題.. –

回答

2

我不明白爲什麼,但沒有錯誤被稱爲即使肯定有錯誤。我可以確定的唯一解決方案是顯然討厭的超時黑客攻擊。

var readyError = false; 
var waitTimer = setTimeout(function() 
{ 
    readyError = true; 
    throw new Error('YouTube player not initializing. Possible Flash out of date error.'); 
}, 10000); 

var ytPlayer = new YT.Player('youtube-player-id', { 
    events: { 
    onReady: function(e) { 
     clearTimeout(waitTimer); 
    }, 
    onStateChange: function(e) { 
     ... 
    }, 
    onError: function(e) { 
     ... 
    } 
    } });