如何在身体加载时播放音频?

Posted

技术标签:

【中文标题】如何在身体加载时播放音频?【英文标题】:How to make audio play on body onload? 【发布时间】:2018-10-14 23:10:51 【问题描述】:

昨天我下载了一个响应式导航栏教程,看到作者使用 javascript 使用了按钮点击声音。 所以我尝试了代码(复制它)并且也能够做到。单击按钮时,背景音乐播放良好。但是当我尝试将相同的代码添加到 body onload 函数时,音乐不会播放。

所以,我以为代码有错误,但突然我从 Opera Mini for android 打开 html 文件,出现了背景音乐。无法在 Chrome 等高级浏览器中运行的代码在 Opera Mini 中运行。为什么会这样?

 <!DOCTYPE html>
 <head>
 <title>Untitled</title>
 <meta charset="UTF-8"/>
 <link rel="stylesheet" href="" type="text/css"/>
 <script>

 function stir0()
 var bbs = new Audio('media/background.ogg');
 bbs.play();
 alert('bb');
 

 function pl()

  var Loops = new Audio('media/button_click.ogg');

 Loops.play();
  


 </script>
 </head>
 <body onload="stir0()">
<button id="clk" onClick="pl()">Here</button>
 </body>
 </html>  

【问题讨论】:

检查这个:***.com/questions/15394704/future-of-javascript-audio 【参考方案1】:

截至 2018 年 4 月,Google 拥有changed their Autoplay Policy。它是在 Chrome v.66 中实现的。

政策中的相关sn-p:

Chrome 的自动播放策略很简单:

始终允许静音自动播放。

在以下情况下允许自动播放声音:

用户与域进行了交互(点击、点击等)。 在桌面上,用户的媒体参与指数阈值已被超过,这意味着用户之前播放过有声视频。 在移动设备上,用户已将网站添加到他们的主屏幕。

***框架可以将自动播放权限委托给其 iframe 以允许自动播放声音。

我理解它的方式,它似乎反映在您的体验中:如果用户没有对专门请求播放音频的域进行任何操作,Chrome 浏览器会静音任何自动播放的音频。一旦用户进行了积极的交互,规则就会软化,并且可以在未经同意更新的情况下播放媒体。

【讨论】:

能否详细解释一下? 当然,从附加的链接中添加了更多详细信息 =) 我明白了。但是我该如何解决这个问题呢?【参考方案2】:

你可以用纯 HTML 来做第一个(背景音乐):

<audio autoplay>
    <source src="media/background.ogg" type="audio/ogg">
</audio>

第二个(按钮点击)你这样做:

//JS
var Loops = new Audio("media/button_click.ogg");
//Make sure this is a GLOBAL variable.

在 HTML 中:

<!--HTML-->
<button id="clk" onClick="Loops.play()">Here</button>

【讨论】:

使用纯html会在页面加载后立即播放音频吗? @BestBibek 它会在&lt;audio&gt; 元素加载后立即播放。 @BestBibek 没问题。我的回答解决了你的问题吗?如果是这样,您能否将我的答案标记为已接受? 又是同样的问题!从 Opera Mini 打开时音乐播放良好,但从 chrome 打开时播放效果不佳。 @BestBibek 那是因为ogg 只是 Opera 格式。您需要 mp3 才能从 Chrome 运行。它有效。

以上是关于如何在身体加载时播放音频?的主要内容,如果未能解决你的问题,请参考以下文章

如何在播放前完全加载音频?

尽管不使用自动播放标签,但 HTML 音频在页面加载时播放

使用avplayer播放音频时如何将音频缓存到本地

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

HTML/JS - 在页面加载时播放音频文件

在 vue 中构建音频播放器;如何在更改绑定后开始播放音频:src?