2012-07-19 37 views
0

我在檢查是否正在加載視頻時遇到了一些問題。我需要檢查並查看是否加載,因爲我正在循環加載所有視頻,例如video_1.mp4,video_2.mp4,video_3.mp4。但是,它似乎忽略了「readyState」並直接轉到else語句。使用JavaScript檢查視頻是否在iPad中加載

下面是代碼:

function loadMedia() { 
var media = document.getElementsByTagName("video")[0]; 

if (media.readyState === 4) { 
    alert("Video has been loaded!"); 
} else { 
    alert("Video hasn't been loaded!"); 
} 
} 

是readyState的以iPad支持?


編輯:添加更多的代碼。

loadMedia函數通過匿名函數綁定到window.onload。

window.onload = (function() { 
    loadMedia(); 
}); 

下面是HTML:

<video class="video" controls="controls" poster="images/posters/tb_1.jpg" preload="metadata"> 
    <source src="media/tb_1.mp4" type="video/mp4; codecs='avc1.42E01E, mp4a.40.2'" /> 
    We apologize, but your browser does not support this video. Please consider an upgrade. 
</video> 

回答

0

蘋果文檔似乎至少暗示readyState媒體元素一直以來的iOS 3.0左右: http://developer.apple.com/library/safari/#documentation/AudioVideo/Reference/HTMLMediaElementClassReference/HTMLMediaElement/HTMLMediaElement.html

這有點間接的文件,也許,但它是一些東西。

由於發射了JS調試器上的設備可以是惱人,你可能想改變這一點:

alert("Video hasn't been loaded!") 

要這樣:

alert("Video hasn't been loaded! " + media.readyState); 

如果您在瀏覽器中打開控制檯(如果你喜歡,切換到console.log()而不是alert()),這應該告訴你,如果你的問題是,readyState是未定義的(因此可能不支持),或者如果問題是可能media未定義(似乎不太可能)。

當然,您可能也發現了一個錯誤。如果他們允許這樣的事情,你可能想要搜索Apple的bug追蹤器。

+0

我試過了,它說「0」,我確信它的意思是「HAVE_NOTHING」。我知道蘋果有一個錯誤記者,但我不知道你是否可以瀏覽它們。 – W3Geek 2012-07-19 22:22:52

+0

'media.networkState'呢?那是什麼價值? – Trott 2012-07-19 22:27:08

+0

嗯,我試過了,值是「1」。在這個文檔中,https://developer.mozilla.org/en/DOM/HTMLMediaElement表示值爲「1」的是IDLE。我檢查了3的值?我可能會寫些不正確的東西......但它可以在Chrome和Firefox的桌面上運行。 **編輯:** networkState在桌面上不起作用。該值也是「1」。 – W3Geek 2012-07-19 22:33:35