如果我有以下代码,则调用回调函数:
var audio = new Audio();
audio.addEventListener('loadedmetadata', function () {
console.log("Loaded metadata for %s, duration=%s",
soundUrl, audio.duration);
audio = null;
});
audio.src = soundUrl;
但是,如果我执行以下操作,则不会调用回调:
var audio = new Audio();
audio.onloadedmetadata = function () {
console.log("Loaded metadata for %s, duration=%s",
soundUrl, audio.duration);
audio = null;
};
audio.src = soundUrl;
这有什么好的理由吗?我认为FOO.addEventListener(BAR, BAZ)
相当于FOO['on' + BAR] = BAZ
。
答案 0 :(得分:0)
显然不是在这种情况下,虽然我认为两种方法应该具有相同的效果。可能是在脚本有机会运行并触发事件之前,音频加载速度更快。
我浏览了一些但只能找到添加addEventListener的示例。关于dev.opera.com的这篇文章虽然是关于视频http://dev.opera.com/articles/view/consistent-event-firing-with-html5-video/
,但却对它有所了解