gpt4 book ai didi

javascript - Firefox 上不会调用 HTML5 视频的 canplay/canplaythrough 事件。为什么?

转载 作者:行者123 更新时间:2023-12-03 21:38:15 24 4
gpt4 key购买 nike

我正在构建一个用于管理 HTML5 视频的 jQuery 插件。我正在 try catch canplay 和 canplaythrough 事件。在 Chrome 中,可以毫无问题地触发该事件。在 Firefox 中,有时会触发,有时不会。

我在这里稍微简化了我的代码:

$('#my_video').on('canplay canplaythrough', function(){
console.log('canplay event fired');
});

我还尝试使用 native javascript .addEventListener() 但它不起作用。

知道为什么在 Firefox 上没有调用该事件以及如何解决这个问题吗?

注意:请不要告诉我使用 jplayer 和 video-js 等已有的插件之一,我知道它们存在并且运行良好,但我必须构建一个内部解决方案。

最佳答案

问题是你的video元素已触发canplaythrough在注册事件处理程序之前发生事件。

正如您在自己的回答中指出的那样,您可以将脚本放在 <head> 中,但这对您的页面性能不利。

解决问题的更好方法是检查 readystate属性并在这种情况下手动执行您的函数:

var $video = $('video'),
videoElement = $video[0];

$video.on('canplaythrough', callback);

// If the video is in the cache of the browser,
// the 'canplaythrough' event might have been triggered
// before we registered the event handler.
if (videoElement.readyState > 3) {
callback();
}

关于javascript - Firefox 上不会调用 HTML5 视频的 canplay/canplaythrough 事件。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10235919/

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