预加载的声音被卸载?

2023-12-01

所以,我有以下测试代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Test</title>
</head>
<body>
   <button onclick="play()">Play</button>
    <script>
        var sounds = new Array();
        preloadSnd = function(){
            var snds = new Array();
            for(i = 0; i < preloadSnd.arguments.length; i++){
                snds[i] = new Audio();
                snds[i].src = preloadSnd.arguments[i];
            }
            sounds.push(snds);
        }
        preloadSnd(
            "test1.mp3",
            "test2.mp3",
            "test3.mp3",
            "test4.mp3",
            "test5.mp3",
            "test6.mp3",
            "test7.mp3",
            "test8.mp3"
        )
        play = function(){
            sounds[0][parseInt(Math.random()*8)].play();
        }
    </script>
</body>
</html>

它预加载一些音频文件,然后单击按钮即可随机播放其中一个。问题是,大约一分钟左右后,一些音频文件似乎被卸载,因为它们在播放时再次从服务器获取。这意味着一旦我的“应用程序”加载,我仍然需要连接到互联网才能听到一些声音。如果我的缓存已启用,则不需要连接到互联网,但我不能依赖已启用的缓存。有没有什么方法可以让这些文件保持加载状态,这样就不需要重复获取它们?


您可以将所有媒体作为 Blob 获取,然后从中创建 blobURI。

这样,浏览器会将其保留在内存中(直到硬刷新或直到您调用URL.revokeObjectURL(blobURI);)

fetch("https://dl.dropboxusercontent.com/s/8c9m92u1euqnkaz/GershwinWhiteman-RhapsodyInBluePart1.mp3")
.then(r => r.blob()) // could be xhr.responseType = 'blob'
.then(blob => {
  const aud = new Audio(URL.createObjectURL(blob));
  aud.controls = true;
  document.body.appendChild(aud);
  console.log('Fully loaded and cached until the page dies...')
  });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

预加载的声音被卸载? 的相关文章

随机推荐

  • 将单元格颜色映射到 kableExtra 中的数据值以创建热图表

    我有一个下表 想要应用 ROW 级别的热图 1 知道怎么做吗 现在 热图对于下面单行中的两个值是相同的 2 有没有办法使组列的标题不成 90 度角 现在所有标题都是有角度的 但对于组列来说 最好不设置角度 90 这是 rmd 文件 titl
  • Pandas 自动推断最佳数据类型:str 到 int 不起作用

    在超过 100 列的数据框上 我希望 pandas v1 4 2 自动地将所有列转换为 最佳 数据类型 根据文档df convert dtypes or df infer objects 应该可以解决问题 考虑以下示例 gt gt df p
  • .NET 中的依赖注入有示例吗?

    有人可以解释一下吗依赖注入 with 一个基本的 NET 示例并提供一些 NET 资源的链接来扩展该主题 这不是重复的什么是依赖注入 因为我要询问具体的 NET 示例和资源 这是一个常见的例子 您需要登录您的应用程序 但是 在设计时 您不确
  • 参考变量

    在某些文本中 我们不能将常量值分配给引用变量 当我执行这样的程序时 我可以做到 有什么条件我们不能将常量值赋给引用变量吗 您可以将常量引用初始化为常量值 const int i 12 如果引用不是 const 则会出现编译器错误 int i
  • Powershell Active Directory 帐户属性变量

    抱歉新手问题 我正在使用 Powershell 3 获取所有用户帐户的列表 我正在尝试为帐户生成 已启用 或 已禁用 的输出 我可以使用以下命令从活动目录获取帐户状态代码 rc Rech PropertiesToLoad Add userA
  • 如何让 angular2 [innerHtml] 工作 [重复]

    这个问题在这里已经有答案了 我不知道做错了什么 因为没有报告错误 我有一个组件类 import Component OnInit ViewContainerRef from angular core Component selector a
  • AsyncTask - 扩展和 doInBackground 需要哪些参数?

    这段使用 AsyncTask 的代码有什么问题 尤其 我需要在 fetchSchools 中放入哪些参数 我需要在 doInBackground 中放入哪些参数 我发现了很多 有用 的示例 但它们都在这些参数中使用伪代码 并且没有解释我实际
  • 通过深度 HashMap 递归迭代

    我有一个类似于以下内容的 JSON 字符串 foo bar id 1 children some string id 2 children some string id 2 children 我对该字符串进行 JSON 解析 将所有对象转换
  • 循环更新 mayavi 绘图

    我想做的是循环更新 mayavi 图 我希望绘图的更新在我指定的时间完成 与动画装饰器不同 因此 我想要运行的一段示例代码是 import time import numpy as np from mayavi import mlab V
  • 当函数没有被前向声明时,GCC 在编译器阶段不会抛出错误

    Ok 我的目录中有 3 个文件 main c include
  • 如何使用 sklearn.datasets.load_files 加载数据百分比

    我正在加载 8000 张图像sklearn datasets load files并通过 resnet 从keras以获得瓶颈特征 然而这个任务在 GPU 上需要花费几个小时 所以我想知道是否有办法告诉load files加载一定百分比的数
  • Jersey:在不使用 web.xml 文件的情况下禁用 OPTIONS 请求的自动 Wadl 生成?

    我想完成与这个问题相同的事情 禁用 OPTIONS 请求的自动 Wadl 生成 但我们没有web xml文件 我们还利用ResourceConfig 其中getProperties方法是最终的 所以我不能按照中的建议覆盖它其他问题 我试过打
  • 为什么将 D3 源复制到 Angular 服务中?

    我尝试将 d3 使用到一个有角度的项目中 如主要示例之一中提到的NG通讯 其中展示了如何在 Angular 中设置 D3 服务 我想知道将 D3 作为 Angular 服务如何与 Angular yeoman 和 Bower 配合良好 还是
  • 水文年时间序列

    目前我正在研究河流流量数据分析 我有从1935年至今的每日出院记录 我想提取每个水文年的年度最大流量 从 01 11 开始到明年 31 10 然而 我发现HydroTSM包只能处理自然年 我尝试使用 zoo 包 但我发现它很难计算 因为每年
  • XSD 用于带有 HREFLANG 的站点地图

    我们正在推出一个支持 20 种语言和大量区域内容 即针对特定国家或一组国家的内容 的主要网站 因此 我们有一个在站点地图中使用 xhtml link 和 rel hreflang 的教科书用例 我们通常更喜欢从 XSD 生成类 以便我们可以
  • 生成两个具有相同maven项目的jar

    我想在执行 mvn clean install 时从同一个 Maven 项目生成两个 jar 两个罐子之间的唯一区别是内容META INF folder 目前 我已经我的应用程序 jar 我现在想要my jar xxx jar and 我的
  • 如何对主键重新排序?

    我有一个包含 5700 条记录的表 主键是一个整数 现在我注意到缺少一些值 像这样 100 data 101 data 102 data 104 data 103不见了 我如何更新所有行以使顺序正确 104变成103在我的示例中 在一个 S
  • 无法加载文件或程序集“AjaxControlToolkit”或其依赖项之一。该系统找不到指定的文件

    我已经使用我的 Visual Studio 安装了 AJAXcontrolsToolkit 并将 Combobox Ajaxcontrol 控件放置在我的网页中 当我编译代码时出现以下错误 无法加载文件或程序集 AjaxControlToo
  • 如何将云存储上的文件中的 json 导入到 Bigquery

    我正在尝试通过 api 将文件 json txt 从云存储导入到 Bigquery 但抛出错误 当通过网络用户界面完成此操作时 它可以正常工作并且没有错误 我什至设置了 maxBadRecords 0 有人可以告诉我我在这里做错了什么吗 代
  • 预加载的声音被卸载?

    所以 我有以下测试代码