【发布时间】:2020-08-03 15:04:56
【问题描述】:
所以我目前正在构建一个网站,该网站有一个包含四个视频的轮播,每个视频都通过连接到 Bootstrap 3 轮播的slide.bs.carousel 事件来触发播放。
每个视频都嵌入到页面中,如下所示:
<video id="somevideo" class="video-js vjs-default-skin m-hide" controls preload="auto" data-setup='{ "controls": false, "autoplay": false, "preload": "auto" }'>
<source src="somevideo.mp4">
<source src="somevideo.webmhd.webm">
</video>
现在,鉴于 Apple 对 HTML5 视频的自动播放和预加载施加了特别的限制(两者都被禁用,并且需要用户交互才能触发播放),我决定省略移动视频并选择静态图像。这相对简单,因为阻止视频覆盖内容所需的只是隐藏它们的媒体查询。
也就是说,我发现阻止视频被下载非常困难,而且开销是大量。
例如,我有一个脚本来检查用户当前是否从移动设备访问,因此,我尝试过:
var check = false;
window.mobilecheck = function() {
// Check for mobile here
if (check === true) {
// Device is mobile
var videos = document.querySelectorAll('.video-js');
for (var i = 0; i < videos.length; i++) {
// videojs(videos[i]).destroy();
videos[i].parentNode.removeChild(videos[i]);
}
}
}
这成功删除了元素,但必须在 DOMReady 上调用这也意味着资源已经开始下载。
如何阻止视频在移动设备上加载?我想找到一个优先使用 VideoJS 的解决方案。
【问题讨论】:
-
值得注意的是,在适用于 Android 的 Chrome v43.02357.93 上,我注意到通过媒体查询隐藏的视频根本不会下载。我已经通过网络选项卡中的 chromes 调试工具对此进行了测试。这是否只是 Chrome 的事情我不能说,提供的解决方案仍然是很好的技术。
-
如果视频有src会被下载,CSS不能改。
标签: javascript html video