【问题标题】:Javascript audio isn't working on mobile devicesJavascript 音频无法在移动设备上运行
【发布时间】:2018-09-02 20:54:26
【问题描述】:

下面的代码在桌面浏览器上运行良好(播放音乐)。但是当我尝试在任何移动设备上打开该网站时,它就无法正常工作。

var music = new Audio("mscs/gamemusic.mp3");

function playmusic() {
    music.controls = false;
    music.loop = false;
    music.autoplay = true;
    document.body.appendChild(music)
}

我在游戏开始时在一个函数中使用它:

function createnewgame() {
    ...
    playmusic();
    ...
    ...
}

有谁知道怎么回事?

【问题讨论】:

  • 你有没有在playmusic里面放一个alert来检查这个函数是否真的在移动设备上被调用了?我还建议您列出您尝试过的移动操作系统和浏览器。
  • @YakovL 是的,我尝试了警报消息,它出现了,但仍然无法播放音乐。

标签: javascript android ios audio autoplay


【解决方案1】:

嗯,这显然是浏览器支持问题。根据caniuse<audio> 元素(以及 js 的 Audio 对象是用于它的接口)存在已知的支持问题,包括

iOSChrome on Android 不支持规范建议的 autoplay

和其他人。不确定这是否可以通过某些库来克服,但由于设计引入了 autoplay 的限制,我不会指望解决方法......

【讨论】:

    【解决方案2】:

    您可以尝试直接从 JavaScript 播放音频,而不是将 var "music" 添加到 html 正文。

    function playmusic() {
    music.play();
    }

    【讨论】:

      【解决方案3】:

      部分手机浏览器支持自动播放音频,但ios、chrome等需要交互动作才能触发声音播放。您可以尝试使用静音属性...enter link description here

      【讨论】:

      • 我不明白...我想在游戏打开时播放音频。我无法理解静音属性...
      • 如果你想让网页一进入手机浏览器就播放声音,这是行不通的。有些浏览器需要用户交互。提出了两个建议。一个是在用户触摸屏幕,另一种是在用户进入页面时在页面上显示静音图标,表示此时页面处于静音状态。
      猜你喜欢
      • 2017-01-29
      • 2016-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-03
      • 2014-08-30
      • 2017-01-28
      • 2016-08-17
      相关资源
      最近更新 更多