javascript - HTML5 音频元素在移动设备上不起作用

标签 javascript android ios html audio

我有一个带有 HTML5 元素的示例。我需要在 ajax 请求后动态创建音频元素并播放它。但是在手机上是不行的!安卓 4.1 和 IOS7。它在桌面上完美运行!
页面加载后它不起作用。但它在按下按钮后和按下按钮播放控制后起作用。为什么?

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<script>
function play() {
    var audio = document.createElement('audio');
    audio.autoplay = true;
    audio.controls = true;
    audio.src='http://s3.amazonaws.com/audiojs/02-juicy-r.mp3';
    document.body.appendChild(audio);

    audio.play();
}

setTimeout(play, 1000);

</script>
</head>

<body>

<h1>test</h1>

<input type='button' value='Press Me' onclick='play()' />

</body>
</html>

最佳答案

我有同样的经历,在 AJAX 调用后无法播放音频。我想这与移动设备上的安全设置有关。移动浏览器的行为不同。尝试在移动设备上调用键盘时也会发生同样的情况。只有在按键或单击事件之后才有可能,但在页面加载或 Ajax 调用之后不会自动发生。

我使用的一种解决方案可能是在 Ajax 调用之外触发声音,以防一开始就触发了 Ajax 调用。

关于javascript - HTML5 音频元素在移动设备上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20000788/

相关文章:

android - 为什么listview的scrollTo(x,y)方法没有转到listview的末尾

ios - 加载图像时 asyncImageView 崩溃

ios - 如何在 iOS 中将堆栈 View 中的第一个 View 置于前面?

javascript - Ember + Handlebars 将 Rails 验证错误渲染为 [object Object]

Android处理很多 Intent

javascript - Angular2 Material Design alpha.9-3 有 '404 not found' @angular/material

android - 使用 Jetifier 转换 com.android.tools.build\builder\3.1.4\builder-3.1.4.jar 失败。原因 : duplicate entry: module-info. 类

ios - 准备 Segue 函数无法正确传递数据

javascript 正则表达式查找文本中包含(at)的单词

javascript - 在每页上插入折叠标记(wkhtmltopdf)