- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
设置.currentTime
时的 HTMLMediaElement
在 canplay
内调用前的事件 .play()
pause
事件被调度。
尝试调用 .play()
时在 canplay
内设置后的事件 .currentTime
并抛出错误
DOMException: The play() request was interrupted by a call to pause().
如何设置.currentTime
在 canplay
内或 canplaythrough
HTMLMediaElement
的事件不 dispatch pause
事件,或如何调用.play()
来自内部 pause
从集合开始媒体播放的事件处理程序 .currentTime
?
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<video preload="auto" controls></video>
<span></span>
<script>
const url = "https://mirrors.creativecommons.org/movingimages/webm/ScienceCommonsJesseDylan_240p.webm#t=10,15";
const video = document.querySelector("video");
let cursor = 10.5;
video.oncanplay = e => {
video.oncanplay = null;
video.currentTime = cursor;
console.log(e, video.currentTime, video.buffered.end(0));
video.play().catch(err => document.querySelector("span").textContent = err.message);
}
video.onpause = e => {
console.log(e, video.currentTime);
}
video.src = url;
</script>
</body>
</html>
最佳答案
你那里的错误真的很奇怪,我不确定它来自哪里,也不确定你遇到它的几率有多大。
如果我没记错的话,当你设置currentTime
属性。
所以他们会有点忘记它,并且表现得好像您已经过了 end
阈值并因此暂停了视频。
但真正奇怪的是,在尝试编写测试用例时,我发现这只发生在 canplay
事件中,只发生在这个视频中,并且只发生在时间范围内设置为 10,15
。
将其设置为 #t=10.0,15
,有效。
将其设置为 #t=10,15.0
,有效。
将它设置为任何其他值,它似乎有效 (不,我没有测试所有可能的值)。
在另一个视频上将其设置为 #t=10,15
,有效。
在同一视频上将其设置为 #t=10,15
,但由其他服务器提供,它不起作用...
// changed the #t parameter
const url = "https://mirrors.creativecommons.org/movingimages/webm/ScienceCommonsJesseDylan_240p.webm#t=10.0,15";
const video = document.querySelector("video");
let cursor = 10.5;
video.oncanplay = e => {
video.oncanplay = null;
video.currentTime = cursor;
console.log(e, video.currentTime, video.buffered.end(0));
video.play().catch(err => document.querySelector("span").textContent = err.message);
}
video.onpause = e => {
console.log(e, video.currentTime);
}
video.src = url;
<video preload="auto" controls></video>
<span></span>
所以对于真正的修复,我认为 https://bugs.chromium.org/p/chromium/issues/仍然是最好的方式,但我不确定他们会告诉你什么,因为这似乎与视频文件本高度度相关。
关于javascript - 如何在 canplay 事件中设置 HTMLMediaElement 的 .currentTime,调用播放并避免调度暂停事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46310031/
我在中有以下代码: var canplay = false; if (window.addEventListener) { window.addEventListener('canplay',
我用 JS 和 HTML5 定制了一个音频播放器。首先,我做简单的: 还有 JS: $("#btnPlayPause").click(function(){
我正在尝试确定 HTML5 音频元素何时准备好开始播放,以便通知用户。我正在使用以下代码: var audio = document.getElementById("audio")
我正在用 php 开发一些网站。页面通过ajax加载。其中一个页面有 HTML5 视频。在视频播放之前,我在其顶部显示了一个加载程序。一旦进入 canPlay 事件,我就会删除 loader div。
在 Windows 7 和 Linux (Ubuntu 13.10) 上的 Chrome 31 中,video 元素上的事件处理程序注册了 canplay(和 oncanplay ,只是为了确保)永远
我想知道 loadedmetadata 之间有什么区别和 canplay视频的事件监听器。根据 MDN: canplay Sent when enough data is available that
我尝试使用 canplayer 重播一些 candump 文件,但没有成功。当我尝试运行 canplayer 时,它只是执行并返回,让我不知道发生了什么。 到目前为止我已经尝试过: 设置1 设置 vc
设置.currentTime时的 HTMLMediaElement在 canplay 内调用前的事件 .play() pause事件被调度。 尝试调用 .play() 时在 canplay 内设置后的
我正在尝试通过 html5 音频标签播放一些音频(如果有任何不同,则使用 Buzz 作为包装器)。 因为音频是定时从另一个事件开始的,所以我一直在听 canplay 事件。 它在 Chrome 和 F
我正在构建一个用于管理 HTML5 视频的 jQuery 插件。我正在 try catch canplay 和 canplaythrough 事件。在 Chrome 中,可以毫无问题地触发该事件。在
我需要更改 HTML5 音频元素的偏移时间。我编写了一个函数来处理 canplay 事件并更改 currentTime 属性。 但是,似乎更改 currentTime 属性会触发事件,因此它会循环进行
我是一名优秀的程序员,十分优秀!