0

我在我的 HTML 页面中使用了一个声音,并编写了一个 JavaScript 函数来在特定时间播放它。问题是,当我在 PC 中加载页面时,它运行良好,但在移动设备上没有播放声音。怎么了?

<audio id="buzzer" controls="controls">
<source src="assets/sound/buzzer.mp3" type="audio/mpeg" />
function PlaySound1() {
    var audioElement = document.getElementById('buzzer');
    audioElement.setAttribute("preload", "auto");
    audioElement.autobuffer = true;

    var source1 = document.createElement('source');
    source1.type= 'audio/mpeg';
    source1.src= 'buzzer.mp3';
    audioElement.appendChild(source1);

    audioElement.load();
    audioElement.play();
};
4

4 回答 4

1

大多数移动浏览器需要直接的物理交互才能开始音频播放。这意味着您不能在页面加载或任何异步函数(如setTimeout)中触发初始播放。

于 2013-07-26T21:03:22.457 回答
0

您是否查看了浏览器支持表http://www.w3schools.com/html/html5_audio.asp

于 2013-07-26T20:17:34.843 回答
0

您可以尝试UbaPlayer,它带有适用于旧浏览器的 Flash 后备。

支持表(来自HTML5 Doctor:HTML5 Audio – The State of Play

Mobile Browser                              Version         Codec Support
Opera Mobile                                11.0+           Device-dependent
Android                                     2.3+            Device-dependent
Mobile Safari (iPhone, iPad, iPod Touch)    iOS 3.0+        MP3, AAC
Blackberry                                  6.0+            MP3, AAC
于 2013-07-26T19:43:11.610 回答
0

您的代码没有任何问题。默认情况下,移动浏览器不会自动播放声音,因为浏览器的创建者不希望它被网站利用。我也几乎放弃了,因为我在网上找不到任何东西。

大约 8 个月后,我从 iPhone 切换到 Android,我发现 Chrome 和 Firefox 在它们的浏览器中都有权限选项,允许某个网站播放声音。

目前在 iOS 中,我没有看到 Safari 和 Chrome 浏览器有这样的选项。

我附上了来自 Android Chrome 浏览器设置的图片: 点击地址栏的锁后 隐藏权限设置

于 2019-08-20T03:17:00.647 回答