HTML5-只加载一次视频,但在两个不同的标签中使用
HTML5 - Loading video only once but use it in two different tags
在一个网站中有两个不同id的视频标签。一个是模式对话框中的预览监视器,另一个是网站本身的主视图监视器。
<video src="" id="preView" ></video>
<video src="" id="mainView" ></video>
加载网站时,视图为空。通过模式对话框,用户可以从文件列表中选择他们想要的视频作为url
,然后在单击时将其分配给preview
元素。
preView.src = url;
选择视频后,最后单击一个按钮在主视图监视器中打开视频。此时,preView.src被分配给mainView.src元素。并且preView元素被清除以停止任何进一步的加载。
mainView.src = preView.src;
preView.src = '';
到目前为止一切顺利。除了视频总是加载两次,这是浪费资源和时间。
如何避免这个问题?
我的第一种方法是只使用一个视频元素,并根据需要将其从一个地方移动到另一个地方。但他的工作只能通过一些昂贵的javascript代码来触发css样式,我想避免这种情况。
我的第二种方法是简单地从一个元素中取消引用加载的视频,并在另一个元素中将其引用,而不需要再次加载,这总是在以通常的方式分配时发生。
因此,最后一个问题是如何告诉浏览器只加载一次视频,但依次在两个不同的视频标签中使用?有什么提示可以实现吗?如果能得到一些帮助就太好了。
您可以尝试只加载一次视频(在主视图中(,并在单独的画布中显示预览。
类似于:
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var video = document.getElementById('video');
video.addEventListener('play', function() {
var $this = this;
var cw = Math.floor(video.clientWidth / 5);
var ch = Math.floor(video.clientHeight / 5);
canvas.width = cw;
canvas.height = ch;
(function render() {
if (!$this.paused && !$this.ended) {
ctx.drawImage(video,0,0,cw,ch)
setTimeout(render, 1000 / 30);
}
})();
});
(HTML请参阅jsfiddle(
这种方法需要更多的编码,以便在用户切换到/从预览主视频时管理主视频的自动启动和重置,但它允许您只使用一个画布,并在其中绘制所有预览。
您可以阅读这篇文章,了解有关html5和combos 的更多信息
相关文章:
- JavaScript中的RegEx:两个标签之间的内容
- 有没有一种方法可以从两个标签之间提取文本,并以我选择的格式输出
- 谷歌应用程序在两个标签之间编写目标文本
- jqplot.replot无法正常工作.图例仅由两个标签代替:“;1〃;以及“;2〃;
- 如何删除两个标签之间的文本
- 两个元素的两个标签,具有相同的 id,但形式不同.为什么不起作用
- 引导数据库数据切换在同时使用两个标签时不使用 href #home 选项卡
- 仅当我有两个
- 标签时,图像才会更改
- 如何为具有相同“类”的两个标签添加类;对于“;属性
- 当javascript改变两个标签的宽度时,它们会自动改变位置
- 替换两个标签之间的HTML
- 当按钮被单击时,将闪烁的光标放置在两个标签之间
- getElementsByTagName同时用于两个标签
- 引导标签-点两个标签同一时间
- 我怎么能在HTML的两个标签之间写javascript
- 获取两个标签之间的HTML
- 在两个标签中获取一个元素并循环多个变量
- 通过排除其中的几个标签,获得两个标签之间的所有内容
- 如何使用javascript并排创建两个标签
- 同时更改两个标签