预加载 Javascript 音频以在脚本中播放

Posted

技术标签:

【中文标题】预加载 Javascript 音频以在脚本中播放【英文标题】:Preload Javascript audio to play in script 【发布时间】:2016-05-04 00:29:17 【问题描述】:

我有一个运行此脚本的简单程序:

function PlayAudio(Location)
var audio = new Audio(Location);
audio.Play()

在 onclick html 属性中。我有一张精美的加载图片,我知道如何让它出现并成功地让它工作。我想在音频加载时显示这张图片,然后在音频文件加载完成并准备好播放后让它消失。现在,点击元素和听到声音之间有相当长的延迟。

我的麻烦是知道音频何时完成加载并准备好播放。我认为了解何时完成加载的最佳方法是在脚本中预加载文件。我不知道该怎么做。

这是我的问题: 如何在脚本中预加载文件? 或者,有没有办法知道音频文件何时最终播放?

注意:我不能使用<audio> 元素,除非有某种方法可以在<audio> 内嵌套<div>,以便通过单击@ 内容中的任意位置来触发<audio> 中的声音987654326@

抱歉我的描述有点混乱!

谢谢, 卢卡斯 N

【问题讨论】:

【参考方案1】:

你可以使用canplaythrough事件

当就绪状态变为CAN_PLAY_THROUGH时发送,表示 整个媒体可以不间断地播放,假设 下载率至少保持在当前水平。

function PlayAudio (Location)
  var audio = new Audio;
  audio.oncanplaythrough = function(event) 
    // do stuff, e.g.; set loading `img` `style` `display` to `none`
    this.play();
  
  audio.src = Location;

【讨论】:

谢谢,这正是我所需要的。我的项目完美无缺。【参考方案2】:

您将其预加载属性更改为

。 audio.preload = "自动";

它将在启动时加载整个音频文件

【讨论】:

以上是关于预加载 Javascript 音频以在脚本中播放的主要内容,如果未能解决你的问题,请参考以下文章

javascript中的完整预加载音频

Wordpress 音频播放器和 SmoothState。调用回调以在新页面上重新加载播放器?

通过 XMLHttpRequest 预加载音频文件

预加载音频并在播放期间应用 css

用于预加载整个流的 Html 音频标签

预加载 youtube 嵌入