onloadedmetadata不适用于Audio?

时间:2013-11-20 19:31:22

标签: javascript html5 events javascript-events event-handling

如果我有以下代码,则调用回调函数:

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

1 个答案:

答案 0 :(得分:0)

显然不是在这种情况下,虽然我认为两种方法应该具有相同的效果。可能是在脚本有机会运行并触发事件之前,音频加载速度更快。

我浏览了一些但只能找到添加addEventListener的示例。关于dev.opera.com的这篇文章虽然是关于视频http://dev.opera.com/articles/view/consistent-event-firing-with-html5-video/

,但却对它有所了解