2012-07-19 33 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