我的JavaScript不会一直加载音频文件,除非我在音频对象上使用console.log
。
我有加载音频文件并播放的代码。
var sound;
sound = new Audio("foo.mp3");
sound.addEventListener("canplaythrough", function(){
//Do stuff
});
canplaythrough
事件每次都不会触发(我认为这意味着它没有足够的负载以允许事件触发)。由于我在一个小型游戏预加载器中使用它,所以在让游戏运行之前,我依靠这个事件来启动。
在测试期间,我使用console.log
在触发以下事件时检查sound
对象:emptied
,loadedmetadata
,loadeddata
,{{1} },当然还有canplay
。
canplaythrough
如果我对sound.addEventListener("emptied", function(){
console.log(this);
});
// the same for loadedmetadata, loadeddata, and canplay events
对象的任何属性使用console.log
(例如this
),则没有明显的变化。
奇怪的是,只要我在console.log(this.readyState)
事件监听器中的console.log
对象上使用this
,我就无法重现此错误;这些文件似乎每次都加载。
这是为什么?使用emptied
,我是否强制要加载文件?
正在使用的代码示例。
console.log