【发布时间】:2012-02-17 16:43:47
【问题描述】:
在启动基于 JS 的应用程序之前,我正在预加载我的所有资产:
assets = [....]; // files
$.each(assets,function(){
var r = /\.([^\.]+)$/;
var ext = r.exec(this); //get file type
if (ext[1] == 'png'){
var tmp = new Image();
} else if (ext[1] == 'mp3'){
var tmp = new Audio();
}
tmp.src = this;
tmp.onload = function(){
var i = assets.indexOf(this);
assets.splice(i,1);
if (!assets.length){
console.log('all loaded');
app.build();
}
}
});
当我的数组中只有 pngs 时,这很好用,但是当我添加音频 (mp3s) 时,DOM 元素被创建,但它永远不会触发 onload,因此应用程序永远不会启动。我已经尝试添加tmp.load(),但没有任何区别——我也无法在网上找到任何全面的信息。这种方法甚至可能吗? Audio() 是否会触发适当的事件?谢谢!
【问题讨论】:
-
preload属性对你没有好处吗?
标签: javascript jquery events audio html5-audio