gpt4 book ai didi

javascript - Opera HTML5 视频 ReadyState == 2 而不是等于 4

转载 作者:行者123 更新时间:2023-11-28 08:22:41 24 4
gpt4 key购买 nike

在其他 4 个主要浏览器(Chrome、Firefox、IE 和 Safari)上,readyState 变为 4,我的代码执行得很好。然而在 Opera 上,readyState 只达到 2,永远不会达到 4。

代码:

var createSeekslider = function() {
if($atVideo[0].readyState == 4) {
var videoDuration = $atVideo[0].duration;
$seekSlider = $('.videoSeekslider').slider({
orientation:'horizontal',
range:'min',
min:0,
max:videoDuration,
value:0,
step:0.01,
animate:true,

slide: function(event, ui) {
$atVideo[0].currentTime = ui.value;
}
}); //End of (seekslider).slider function
} else {
setTimeout(createSeekslider, 150);
}
}
createSeekslider();

任何帮助将不胜感激!!

最佳答案

我建议不要尝试捕捉 readyState 等于 4 的时刻,而是建议稍微不同的策略 - 处理 canplaythrough 事件:

$atVideo[0].addEventListener('canplaythrough', function() {
// actually, `$atVideo[0].oncanplaythrough = function()` should do fine too
$seekSlider = $('.videoSeekslider').slider({
orientation: 'horizontal',
range: 'min',
min: 0,
max: this.duration,
value: 0,
step: 0.01,
animate: true,
slide: (function(event, ui) {
this.currentTime = ui.value;
}).bind(this)
});
});

我怀疑您的问题与 this issue 中描述的相同:简而言之,Opera 在开始加载视频后立即将 readyState 设置为 4 (HAVE_ENOUGH_DATA),然后在以下情况下将其切换为 2 (HAVE_CURRENT_DATA):它的大部分内容已加载 - 这对于 setTimeout 安排的检查来说太快了。

关于javascript - Opera HTML5 视频 ReadyState == 2 而不是等于 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22792507/

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