2017-06-06 75 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

简单而精彩,谢谢。如果我有代表,我会赞成。 –