javascript - 从元素列表优化音频预加载

标签 javascript jquery google-chrome-extension

我正在制作一个音板 Chrome 扩展程序,其中包含“myButtons”类的按钮。有了这个,我让我的 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 ),但是,我不确定如何用我当前的函数来实现它。

最佳答案

I need them to load when clicked. So I can have the extension load instantly. I don't mind the time it takes to load the individual audio files.

AudioNodesrc 设置为指向 click 处理程序中媒体资源的 URL

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;
});

关于javascript - 从元素列表优化音频预加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44381268/

相关文章:

javascript - 为什么我的 chrome pageAction 在单击时不会触发 onClicked?

javascript - jQuery .load() 如何防止双击加载

javascript - 为什么我的 HTML5 Canvas 绘图会这样?

javascript - 组合两个 javascript onclick 事件

javascript - 从元素中删除类而不影响正在进行的 css 转换

Jquery 通过复选框过滤列表 DIV

javascript - Bootstrap 按钮水平居中

javascript - 我如何告诉 PHP 提交了哪个表单

google-chrome - 提交自动填充(密码输入字段)

javascript - 如何将数据从 chrome 扩展程序发送到本地主机?