html - 如何防止在 mac OS Safari 浏览器中预加载 HTML5 视频以减少页面加载时间
问题描述
我有带有多个 HTML5 视频的猫头鹰轮播。我添加了 preload="none" ,它在 chrome 和 mozila 中运行良好,但在 Mac safari 版本中运行良好。
<div id="CustomVideo" class="banner-video webview">
<video muted="true" preload="metadata">
<source src="demo.webm" type="video/webm">
<source src="demo.mp4" type="video/mp4">
</video>
</div>
<script>
var owl = $('.slider_owl');
$('.slider_owl').owlCarousel({
items: 1,
loop: true,
dots: false,
video: true,
lazyLoad:true,
autoplay:true,
autoplayHoverPause:false,
autoplayTimeout:5000,
responsive : {
// breakpoint from 768 up
768 : {
onInitialized: function () {
if ($(".owl-item.active video", this.$element).length) {
$(".owl-item.active video", this.$element)[0].play();
owl.trigger('stop.owl.autoplay');
$(".owl-item.active video", this.$element).on('ended', function () {
owl.trigger('play.owl.autoplay')
});
}
},
onTranslated: function () {
if ($(".owl-item.active video", this.$element).length) {
$(".owl-item.active video", this.$element)[0].play();
owl.trigger('stop.owl.autoplay');
$(".owl-item.active video", this.$element).on('ended', function () {
owl.trigger('play.owl.autoplay')
});
}
}
}
}
});
</script>
解决方案
您可以尝试将您的 preload 属性更改为,preload=“none”,
但 preload 属性有几个记录在案的问题。主要是,浏览器似乎有几个不同的实例,它们会完全忽略标签,或者以与预期不同的方式对待标签。例如,某些版本的 safari 不支持此标记的元数据版本。
您可能需要考虑减小文件大小或视频数量,或更改向用户提供它们的方式。您可以使用 js 在页面加载时动态加载它们,而不是直接将它们加载到标记中。
考虑这篇关于预加载视频最佳实践的文章:https ://developers.google.com/web/fundamentals/media/fast-playback-with-video-preload
推荐阅读
- docker - 已删除 Docker 映像
- javascript - 让 switch stmt 运行而没有结果,或者检查 switch var 类型以不首先触发它
- debezium - ERROR 由于错误而停止 (org.apache.kafka.connect.cli.ConnectDistributed) java.lang.NoClassDefFoundError: io/debezium/util/IoUtil
- javascript - 为什么我在 Node 控制台中得到两次输出?
- reactjs - 如何将 mui datepicker 格式化为“mm-Mon-yyyy”?
- termux - 权限被拒绝/操作不允许
- azure - Azure b2c 并发用户登录
- python - python matplotlib - 如何确保x轴值与源数据相同
- amazon-web-services - 如何将不同的 vpc 实例(节点)添加到现有的 eks vpc(两个 vpc 不同)
- android - 如何在 Kotlin 中处理两种不同的改造响应?