gpt4 book ai didi

javascript - 阻止视频在手机后台加载

转载 作者:太空宇宙 更新时间:2023-11-04 14:55:11 26 4
gpt4 key购买 nike

我有一个视频标题,我只想在桌面上播放,而在移动设备上有一个静态图像标题。我可以在移动设备上隐藏视频,看起来效果很好,但视频仍在后台加载并减慢了页面加载速度。我怎样才能完全阻止视频在移动设备上加载。

<video id="bgvid" class="hidden-xs ">    
<source type="video/mp4" src="myvideo.mp4"></source>
</video>

<img alt="" style="width: 100%; height: auto;" src="myimage.jpg" class="visible-xs" />

最佳答案

假设您通过 CSS 或早期的 JS 代码设置可见性,您可以执行如下操作:

  1. 在您的视频元素中包含 data-src 属性而不是 src。如果不需要,则无需加载 src。
  2. 如果视频可见,将data-src复制到src
  3. 现在对 video 元素调用 .load(),以获取新值。

$(
function() {
const bgv = $('#bgvid');

if (bgv.is(':visible')) {
$('source', bgv).each(
function() {
const el = $(this);
el.attr('src', el.data('src'));
}
);

bgv[0].load();
}
}
)
.hidden-xs {
display: none;
}

/* dummy criterion for demo purposes */
@media screen and (min-width: 300px) {
.hidden-xs {
display: block;
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<video id="bgvid" class="hidden-xs " controls>
<source type="video/mp4" data-src="https://archive.org/download/UNIVAC-AD-2/UNIVAC2_512kb.mp4">
<source type="video/ogg" data-src="https://archive.org/download/UNIVAC-AD-2/UNIVAC2.ogv">
</video>

或者,没有 jQuery:

window.addEventListener("load", function() {
const bgv = document.getElementById("bgvid");

// what jQuery checks under the hood
const visible = bgv.offsetWidth ||
bgv.offsetHeight ||
bgv.getClientRects().length;

if (visible) {
const children = bgv.getElementsByTagName("source");

for (let i = 0; i < children.length; ++i) {
children[i].src = children[i].dataset.src;
}
}

bgv.load();
});
.hidden-xs {
display: none;
}

/* dummy criterion for demo purposes */

@media screen and (min-width: 300px) {
.hidden-xs {
display: block;
}
}
<video id="bgvid" class="hidden-xs" controls>
<source type="video/mp4" data-src="https://archive.org/download/UNIVAC-AD-2/UNIVAC2_512kb.mp4">
<source type="video/ogg" data-src="https://archive.org/download/UNIVAC-AD-2/UNIVAC2.ogv">
</video>

关于javascript - 阻止视频在手机后台加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43984623/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com