在我看来,在移动设备上运行时,无法在JavaScript回调中轻松播放Audio对象。下面的代码显示了一个onload功能,它可以在PC上播放加载网页时的声音,但在Android手机上什么也不播放。
我不知情的猜测是,在Audio对象开始播放之前,回调会返回,因此,由于某种深层原因,它会死掉。
这有什么办法吗?在完整版中,JavaScript会从URL中读取要播放的声音。
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>Play Me</title>
<style>
body {background-color:lightgrey}
h1 {color:blue}
p {color:green;font-size:50px}
</style>
</head>
<body onload="playMySound()">
<P>
PLAY ME
<button onclick="playMySound()">sound me</button>
</P>
<br>
<script>
var mySound ;
function playMySound () {
var soundUrl = "http://www.letiketa.com/myapp/sound.ashx?sound=sound1" ;
var mySound = new Audio(soundUrl);
// Actually play the sound
mySound.play() ;
}
</script>
按钮在所有设备上正确播放声音,我想这是一个回调......? onload回调有什么特别之处吗?
答案 0 :(得分:0)
Argh,这与移动设备上的事实有关,目前,除非用户做了一些输入,否则HTML5不允许播放声音,大概是说#34;我允许你播放声音。&#34 ;无论如何,最新的Firefox浏览器V34似乎已经解除了限制,所有工作都应该如此。
Chrome中也有修复,您需要在地址栏中转到&#34; about:flags&#34;并找到所需的手势&#34;选项,禁用它。
毕竟这个我两天前写的节目现在有用......