gpt4 book ai didi

javascript - 为什么视频的 .pause() 不再适用于 chrome?

转载 作者:行者123 更新时间:2023-11-29 23:01:14 28 4
gpt4 key购买 nike

我使用 pause() 来停止视频。由于某种原因,这在 chrome 中不再有效 - 视频短暂停止但随后继续播放,我完全迷失了我的错误所在。

几个月前,我开发了一个脚本,使用 pause() 来控制视频播放。一切正常(并且仍然适用于 Firefox)但由于某种原因它在过去两个月的某个地方停止了在 chrome 中的工作。我已将其完全剥离为几行代码,但我的 pause() 函数在 Ubuntu 18.04 上的 Chromium 和 Windows 7 上最新的 Chrome 中仍然无法正常工作。

<html>
<head>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<script language="JavaScript">

$( document ).ready(function() {
var vid = document.getElementById("videoplayer");
$( "#videoplayer" ).click(function(e) {
vid.pause();
});
});

</script>

</head>
<body>

<video width="1280" height="960" controls id="videoplayer">
<source src="video.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>

</body>

(我知道这是 DOM 和 jquery 的有点难看的混合体,因为我在其余大部分脚本中使用 jquery,但这应该不是问题,不是吗?)。

最佳答案

我不能告诉你发生了什么变化,但是添加 e.preventDefault 可以修复它:

$( "#videoplayer" ).click(function(e) {
e.preventDefault(); // <=====================
vid.pause();
});

一般来说,如果您已经“处理”了某事,您希望阻止其默认操作。

我的猜测是,当您点击视频时,Chrome 实现了切换暂停/播放的默认操作。因此您的代码会暂停,然后 Chrome 会将其切换回播放。

在这种情况下,允许默认值而不是显式暂停可能是值得的,也许通过引入超时:

$( "#videoplayer" ).click(function(e) {
if (!vid.paused) { // Check that video is playing when clicked
setTimeout(() => { // V. brief timer to allow default action to occur
if (!vid.paused) { // Is it still playing?
vid.pause(); // Pause it
}
}, 0);
}
});

关于javascript - 为什么视频的 .pause() 不再适用于 chrome?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55549847/

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