如果爲HTML5 < video>標籤提供的< source>標記都不可播放,我想顯示一個錯誤。如何使用HTML5視頻標籤捕捉NETWORK_NO_SOURCE錯誤
根據this page on the Mozilla Developer Network,似乎我必須檢查視頻元素的networkState屬性,以查看是否加載了任何源代碼,因爲每個單獨的源代碼標記在加載失敗時都會引發它自己的錯誤。
To detect that all child elements have failed to load, check the value of the media element's networkState attribute. If this is HTMLMediaElement.NETWORK_NO_SOURCE, you know that all the sources failed to load.
但是在什麼時候應該檢查networkState?如果我立即檢查調用video_tag.load(),它始終告訴我networkState是NETWORK_NO_SOURCE,即使源元素有效且視頻播放正常。因此,我假設我等待瀏覽器嘗試使用源代碼。
這裏的測試:
var state = this._video_tag.networkState;
console.log('networkState', state);
if(state == this._video_tag.NETWORK_NO_SOURCE)
{
throw new Error('No valid sources');
}
我已經嘗試了所有非法源標籤下面的視頻元素的事件:loadstart,等待loadedmetadata,loadeddata &錯誤,結果如下(在Firefox):
- loadstart:被叫但網絡狀態是NETWORK_LOADING
- loadedmetadata:不叫
- loadeddat答:不叫
- 錯誤:不叫
不過,如果我檢查出螢火蟲的視頻標籤,該networkState是NETWORK_NO_SOURCE只是預期。
我應該使用什麼事件來控制何時檢查視頻標籤,還是有更好的方法來做到這一點?
在FF,e.target.error未定義兩者的視頻和源元件。 :/ – voidstate 2012-02-09 12:50:13
@longilong如果您在媒體元素上使用標記而不是src =「」屬性,則此解決方案將無法工作。 –
sidarcy
2013-04-09 13:29:36