如何在身体加载时播放音频?
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 它会在<audio>
元素加载后立即播放。
@BestBibek 没问题。我的回答解决了你的问题吗?如果是这样,您能否将我的答案标记为已接受?
又是同样的问题!从 Opera Mini 打开时音乐播放良好,但从 chrome 打开时播放效果不佳。
@BestBibek 那是因为ogg
只是 Opera 格式。您需要 mp3 才能从 Chrome 运行。它有效。以上是关于如何在身体加载时播放音频?的主要内容,如果未能解决你的问题,请参考以下文章