1
我預載我的所有資產之前,我開始一個基於JS的應用程序做:預加載音頻文件/事件?
這工作得很好,當我剛png
在我的陣列,但是當我添加音頻(MP3音樂)的DOM元素得到創建,但它永遠不會啓動onload
,所以應用程序永遠不會啓動。我已經嘗試添加一個tmp.load()
,但它沒有任何區別 - 我也無法在網上找到任何全面的信息。這種方法甚至可能嗎? Audio()
是否會啓動適當的事件?謝謝!
我預載我的所有資產之前,我開始一個基於JS的應用程序做:預加載音頻文件/事件?
這工作得很好,當我剛png
在我的陣列,但是當我添加音頻(MP3音樂)的DOM元素得到創建,但它永遠不會啓動onload
,所以應用程序永遠不會啓動。我已經嘗試添加一個tmp.load()
,但它沒有任何區別 - 我也無法在網上找到任何全面的信息。這種方法甚至可能嗎? Audio()
是否會啓動適當的事件?謝謝!
您正在尋找media events,其中說你可以使用例如loadeddata
。
我想解決的其他一些觀點:
我改變你的代碼一點點:
$.each(assets, function() {
var r = /\.([^.]+)$/,
ext = r.exec(this), //get file type
tmp = ext[1] === 'png'
? $("<img>")
: $("<audio>"),
eventName = ext[1] === 'png'
? 'load'
: 'loadeddata';
tmp
.on(eventName, function() {
var i = assets.indexOf(this);
assets.splice(i, 1);
if (!assets.length){
console.log('all loaded');
app.build();
}
})
.attr("src", this); // only set after adding the load callback
// to avoid a possible race condition
});
感謝RegExp上的提示 – m90 2012-02-17 17:09:26
是'preload'屬性不適合你? – Lloyd 2012-02-17 19:40:16