预加载音频文件/事件?
在我启动基于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(); } } });
当我在我的数组中只有png
时,这很好用,但是当我添加音频(mp3)时,DOM元素被创建,但它永远不会触发onload
所以app永远不会启动。 我尝试添加一个tmp.load()
但它没有任何区别 – 我也无法在网上找到任何全面的信息。 这种方法甚至可能吗? Audio()
是否会触发相应的事件? 谢谢!
您正在寻找媒体事件 ,表示您可以使用例如loadeddata
。
我想谈谈其他一些问题:
- 正则表达式字符组中的字符不需要转义。
- 为什么不使用jQuery创建元素并绑定事件处理程序?
我稍微修改了你的代码:
$.each(assets, function() { var r = /\.([^.]+)$/, ext = r.exec(this), //get file type tmp = ext[1] === 'png' ? $("") : $("