首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >过了几次HTML视频的状态就会被挂起

过了几次HTML视频的状态就会被挂起
EN

Stack Overflow用户
提问于 2015-04-08 12:48:45
回答 1查看 1.1K关注 0票数 0

我有一个带有div的HTML页面,其中包含一个HTMLVideo element,10秒后,我删除视频和附加到它的所有事件,

删除视频时,我在视频元素上使用了jQuery .remove()。删除视频后,div元素将明显没有子节点。

几秒钟后(大约5秒),我再次通过创建视频元素和所有源来启动视频,然后将其附加到同一个div中。这是一个循环。

这将工作约5-10分钟。在那之后,我注意到视频不再播放了。我在开发工具中检查了DOM Element,视频中有正确的url

当我检查“网络”选项卡时,它仍然在请求视频。当视频播放时,它具有"GET"状态,响应为"206 partial content"。但是,当它不再播放时,它只响应"(pending)",当我在一个新的选项卡中直接访问视频url时,如果没有失败,加载视频需要一些时间。但是如果我在其他浏览器(IE/FF)中访问它,视频URL将立即加载视频。

我使用

我不知道这是怎么回事,但我认为这是Chrome问题?有人能帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-08 14:43:54

我怀疑这里发生的事情是,您删除的视频元素仍然在内存中,并试图下载。一旦视频不再附加到DOM上,浏览器就不会停止缓冲甚至播放视频,因为以后可能会再次使用它,或者将它用于画布或Web等其他事情。Chrome一次只能下载这么多流,然后才开始屏蔽新的流。

要真正摆脱旧的视频元素,需要将src设置为空字符串,然后调用.load()。这将迫使浏览器停止缓冲该元素,然后您就可以真正使用它了。

或者,您可以重复使用相同的视频元素,并在下一次通过循环在其上设置新的src (或source子元素)。只要当您更改.load()时,请记住在视频元素上调用src

理论上,浏览器可以决定停止缓冲没有播放并且内存中没有引用的视频元素,而只是垃圾收集它。但没有看到你的代码,我不能说你周围是否有任何杂乱的引用。有时候Chrome会对这种事情感到奇怪。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29515093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档