【问题标题】:No Autoplay of mp3 file within jQuery.ready() on Chrome on AndroidAndroid 上 Chrome 上的 jQuery.ready() 中没有自动播放 mp3 文件
【发布时间】:2016-05-07 21:44:00
【问题描述】:

我想在浏览器打开网页时自动播放 mp3 文件。这是我基于 jQuery 的 javascript 代码:

$(window).load(function(){
    alert("Hey");
    (new Audio('mp3/musik.mp3')).play();
});

Android 上的 Chrome 是 Google Play 商店的最新版本 (50.0.something),在我的笔记本电脑上是 44.0.2403.157 (Ubuntu 15.10 64bit)。

在两个浏览器中都会显示弹出窗口,但 mp3 只能在我的笔记本电脑上播放。如果 onclick 事件执行相同的代码(匿名函数中的代码),则它可以在两个设备上运行。这没有意义,不是吗?到底哪里出了问题?

提前致谢!

【问题讨论】:

  • Chrome Android 不支持自动播放 HTML5 音频,我想。 bugs.chromium.org/p/chromium/issues/detail?id=138132
  • @JohnSmith 说了什么。除非它不是一个错误。这是移动设备的一项“功能”,可防止在未经用户同意的情况下进行不必要的下载。
  • @Wainage 是的,正如我链接的文章所述。 “这是有意为之。在 android 上不支持自动播放,因为它会消耗数据流量。”
  • 感谢@JohnSmith,您的评论实际上是正确答案。要么您自己回答并获得积分,要么我将自己发布答案以将此问题标记为已解决。

标签: javascript android jquery html google-chrome


【解决方案1】:

感谢@JohnSmith 在我的问题的 cmets 中提供分析器:

我认为 Chrome Android 不支持自动播放 HTML5 音频。

http://bugs.chromium.org/p/chromium/issues/detail?id=138132

【讨论】:

    【解决方案2】:

    .load 可能会失败,请参阅http://api.jquery.com/load-event/

    改用文档 .ready:

    $(document).ready(function(){
        alert("Hey");
        (new Audio('mp3/musik.mp3')).play();
    });
    

    【讨论】:

    • 正如我所说:在我的情况下 load() 不会失败,因为在两种浏览器(Android 和 Ubuntu 上的 Chrome)上它都会触发。但是,在 Android 上,显然只执行了 alert(),但 Audio.play() 通常有效,例如通过 onclick 事件。
    【解决方案3】:

    这行得通吗?

    $(document).ready(function(){ });
    

    让我知道这是否有效。

    更新:

    好的,我试过了,效果很好

    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width">
      <title>JS Bin</title>
    </head>
    <body>
    <script type="text/javascript">
        window.onload = function() {
            new Audio('Into the Wild - Red to Black.mp3').play();
        };
    </script>
    </body>
    </html>
    

    希望这能解决您的问题。

    【讨论】:

    • 好的,我已经更新了我的答案,这应该可以解决你的问题。
    • 我已经在我的 android 上对其进行了测试,我明白你的意思,这一定是某种错误。与按钮单击完全相同的代码也会在“加载”事件中执行,但播放器不会启动。我什至在加载时模拟了“点击”事件,但它没有开始播放音乐。但是当我单击完全相同的按钮时,它起作用了。请有人理解这一点。
    • 请参阅我原来的问题下的 cmets。此行为适用于移动设备。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多