gpt4 book ai didi

javascript - html5 音频在元素存在之前绑定(bind) timeupdate

转载 作者:太空狗 更新时间:2023-10-29 15:04:59 28 4
gpt4 key购买 nike

我正在尝试从一个尚不存在的音频标签绑定(bind)“timeupdate”事件。我习惯这样做:

$("body").on("click","#selector", function(e) {

});

我用音频标签试过这个:

$("body").on("timeupdate", ".audioPlayerJS audio", function(e) {
alert("test");
console.log($(".audioPlayerJS audio").prop("currentTime"));
$(".audioPlayerJS span.current-time").html($(".audioPlayerJS audio").prop("currentTime"));
});

虽然这不起作用。这应该有效吗?或者我做错了什么?

非常感谢任何帮助。

有一个 fiddle 给你:jsfiddel

最佳答案

显然是媒体事件(那些特别属于音频视频的,比如playpause timeupdate 等)不会冒泡。您可以在 this question 的答案中找到对此的解释.

所以使用他们的解决方案,我捕获了 timeupdate 事件,

$.createEventCapturing(['timeupdate']);  
$('body').on('timeupdate', '.audioPlayerJS audio', updateTime); // now this would work.

JSFiddle demo

事件捕获的代码(取自其他SO答案):

$.createEventCapturing = (function () {
var special = $.event.special;
return function (names) {
if (!document.addEventListener) {
return;
}
if (typeof names == 'string') {
names = [names];
}
$.each(names, function (i, name) {
var handler = function (e) {
e = $.event.fix(e);
return $.event.dispatch.call(this, e);
};
special[name] = special[name] || {};
if (special[name].setup || special[name].teardown) {
return;
}
$.extend(special[name], {
setup: function () {
this.addEventListener(name, handler, true);
},
teardown: function () {
this.removeEventListener(name, handler, true);
}
});
});
};
})();

关于javascript - html5 音频在元素存在之前绑定(bind) timeupdate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29657581/

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