标题解释了大部分内容。我有一个链接列表,这些链接指向我通过 javascript 在页面中加载的视频和音频文件。html 看起来有点像这样:
<html>
...
<body>
...
<div id="main">
<ul>
<li><a class="video" href="video/file1">video 1</a></li>
<li><a class="audio" href="audio/file1">video 1</a></li>
</ul>
</div>
...
</body>
</html>
然后我的 javascript 如下所示。这个想法是,当您单击音频链接时,它将插入一个音频标签,当您单击一个视频链接时,它将插入一个视频标签。单击页面上的任意位置播放/暂停音频/视频。除了应该处理“结束”事件的底部代码块之外,一切正常。这个想法是当媒体完成后你回到链接列表。但是,似乎该事件根本不会绑定。
$(document).ready(function() {
var mediablock;
var playing = false;
$(".video").on("click", function() {
var link = $(this).attr("href");
$("#main").hide();
$("body").append('<video id="videoblock" width="'+$(window).width()+'" height="'+$(window).height()+'"><source src="'+link+'.mp4" type="video/mp4"><source src="'+link+'.ogg" type="video/ogg"></video>');
mediablock = $("#videoblock").get(0);
mediablock.play();
playing = true;
return false;
});
$(".audio").on("click", function() {
var link = $(this).attr('href');
$("#main").hide();
$("body").append('<audio id="audioblock" width="'+$(window).width()+'" height="'+($(window).height()-50)+'"<source src="'+link+'.mp3" type="audio/mpeg"><source src="'+link+'".ogg type="audio/ogg"></audio>');
mediablock = $("#audioblock").get(0);
mediablock.play();
playing = true;
return false;
});
$(document).on("click", function() {
if (playing)
{
mediablock.pause();
playing = false;
}
else
{
mediablock.play();
playing = true;
}
});
$(document).on("ended", "audio, video", function() {
alert('test');
});
});
我尝试了不同的绑定事件的方法。如上和如下:
$("audio, video").bind("ended", function() {
alert('test');
});
$("audio, video").on("ended", function() {
alert('test');
});
在所有这些尝试之后,我对如何正确捕获此事件一无所知。请帮我解决这个问题,以便我可以继续使用我的音频/视频 webapp。
提前致谢!:)
编辑:我通过不重新创建视频/音频标签而仅通过重新分配该标签的来源解决了这个问题。我给音频/视频标签内的两个源标签一个类,然后更新了这些源标签的 src 属性。然后事件绑定按预期工作。