我正在使用Google Chrome上的HTML5视频标签编写视频播放器:我需要显示一些视频(1),然后将它们从DOM文档中删除以显示其他视频,然后再创建一些指向与( 1)。
我注意到有时有时视频在第二次加载时没有显示,而是触发了“停滞”事件……我应该怎么做才能处理此事件并能够显示视频?如果我保留对第一个视频标签的引用,然后在以后重用它,则可以使用,但是保留对每个视频标签的引用可能会非常消耗内存!
如果浏览器一次要加载两个或三个以上的视频,则其中一些将停滞不前。尽管HTML5视频提供了一种告诉它开始加载视频的方法,但是没有办法告诉它停止。第一次开始播放时,只要它在内存中,它将继续尝试加载更多数据,以防万一您决定再次开始播放它。而且一次只能加载这么多视频,因此,如果您仍在加载前三个视频,则第四个视频将等待非常长的时间。
删除旧视频并稍后再加载是正确的方法,但是您需要对此进行非常彻底的了解,以使浏览器停止尝试加载它们。这是您需要做的。
// 1) Pause the video
oldVideo.pause();
// 2) Clear the video source URL
oldVideo.src = "";
// 3) Tell the video to start loading "nothing"
oldVideo.load();
最后一步至关重要。即使您将其设置src
为空字符串,视频也会忽略它,直到您致电为止load
。如果需要,也可以将其从DOM和任何数据结构中删除,以便完全进行垃圾回收。但是即使这样做,也不会清除垃圾,除非您清除src
和调用load
。
下次加载视频时,通过创建新元素或将其设置src
为相同元素,它应该可以正常工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句