2017-06-06 70 views
2

我正在製作一個帶有一類「myButtons」按鈕的音板Chrome擴展程序。有了這個,我有我的Javascript尋找與該類的元素,採取他們的id並使用它來使新的音頻實例脫離他們的ID。 Chrome擴展程序有外部js,必須位於js文件中,而不在html文檔本身擴展加載速度如此之慢的原因是,在擴展程序彈出窗口出現之前,所有200多個音頻文件必須加載。我不知道如何關閉預加載以加快我的擴展加載速度。問題在於需要10秒鐘才能啓動我的擴展。當然,這並不理想。從元素列表中優化音頻預加載

var audios = Array.prototype.map.call(document.getElementsByClassName("myButton"), function (el) { 
var audio = new Audio(); 
audio.src = "mp3/" + el.id + ".mp3"; 
el.onclick = audio.play.bind(audio); 
return audio; 
}); 

我已經看到有音頻實例(https://developer.apple.com/documentation/webkitjs/htmlmediaelement/1633059-preload),但是,我不知道該如何與我目前的功能實現該預加載屬性。

+0

內指向媒體資源是什麼所請求的資源的'內容Length'?如果在用戶點擊'el'之前請求文件,不確定在音頻播放開始之前如何確定十秒延遲? – guest271314

+0

我不確定那是什麼。 –

+0

請求的音頻文件的大小是多少?你的意思是說,在音頻播放開始之前,點擊10秒鐘之後單擊該元素? – guest271314

回答

2

我需要他們加載點擊。所以我可以立即有擴展加載 。我不介意加載單個音頻文件所需的時間。

設置的AudioNodesrc到URL click處理

var audios = Array.prototype.map.call(document.getElementsByClassName("myButton") 
, function (el) { 
    var audio = new Audio(); 
    var src = "mp3/" + el.id + ".mp3"; 
    el.onclick = function() { 
        audio.src = src; 
        audio.play(); 
       }; 
    return audio; 
}); 
+0

簡單而精彩,謝謝。如果我有代表,我會贊成。 –