联想 A698t webview audio.onended监听事件的一个bug

手机系统是android4.03,在webview中监听音频播放结束事件时,遇到一个隐蔽的bug,代码示例如下:

var mess = $('#message'),
    startTime = Date.now(),
    i = 0;
$('audio').on('ended',function(){
    var time = Date.now() - startTime;
    var htmltext = '<br>'+time+':音频已到达结尾!(onended)'+i;
    i++;
    mess.append(htmltext);
});
$('#btn').on('click', function(){
    var audio = $('#voice')[0];
    audio.pause();
    audio.currentTime = 0;
});

具体来说,就是在音频播放至结尾,触发一次‘ended’事件后,点击按钮暂停播放,并将currentTime属性归零,会额外触发一次‘ended’监听事件。

暂时只在联想 A698t上发现这个问题,只好在调用暂停播放前,再检查一次音频播放状态了。

阅读 4.9k
2 个回答

近日在 windows chrome 上发现 音频结束后没有 ended 事件,换了个音频源就有了,不得其解。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进