【转】ios下audio不能自动播放的问题

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <title>Fake auto play html audio in iOS Safari the right way</title>
</head>
<body>

    <audio id="bgmusic" autoplay preload loop></audio>
    <script>
    (function() {
        function log(info) {
            console.log(info);
            // alert(info);
        }
        function forceSafariPlayAudio() {
            audioEl.load(); // iOS 9   还需要额外的 load 一下, 否则直接 play 无效
            audioEl.play(); // iOS 7/8 仅需要 play 一下
        }

        var audioEl = document.getElementById(‘bgmusic‘);

        // 可以自动播放时正确的事件顺序是
        // loadstart
        // loadedmetadata
        // loadeddata
        // canplay
        // play
        // playing
        //
        // 不能自动播放时触发的事件是
        // iPhone5  iOS 7.0.6 loadstart
        // iPhone6s iOS 9.1   loadstart -> loadedmetadata -> loadeddata -> canplay
        audioEl.addEventListener(‘loadstart‘, function() {
            log(‘loadstart‘);
        }, false);
        audioEl.addEventListener(‘loadeddata‘, function() {
            log(‘loadeddata‘);
        }, false);
        audioEl.addEventListener(‘loadedmetadata‘, function() {
            log(‘loadedmetadata‘);
        }, false);
        audioEl.addEventListener(‘canplay‘, function() {
            log(‘canplay‘);
        }, false);
        audioEl.addEventListener(‘play‘, function() {
            log(‘play‘);
            // 当 audio 能够播放后, 移除这个事件
            window.removeEventListener(‘touchstart‘, forceSafariPlayAudio, false);
        }, false);
        audioEl.addEventListener(‘playing‘, function() {
            log(‘playing‘);
        }, false);
        audioEl.addEventListener(‘pause‘, function() {
            log(‘pause‘);
        }, false);

        // 由于 iOS Safari 限制不允许 audio autoplay, 必须用户主动交互(例如 click)后才能播放 audio,
        // 因此我们通过一个用户交互事件来主动 play 一下 audio.
        window.addEventListener(‘touchstart‘, forceSafariPlayAudio, false);

        audioEl.src = ‘http://www.w3school.com.cn/i/song.mp3‘;
    })();
    </script>
</body>
</html>

看了下代码,大概是因为ios内置的系统会拦截audio的自动播放,所以需要一个交互,这个代码的交互就是当屏幕被touchstart之后开始加载音乐然后播放.转需

原文地址:https://www.cnblogs.com/gushengyan/p/9087376.html

时间: 2024-12-12 07:45:23

【转】ios下audio不能自动播放的问题的相关文章

在iOS微信浏览器中自动播放HTML5 audio(音乐)的2种正确方式

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"

iOS下Audio自动播放(Autoplay)音乐

*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* BLOCKS =============================================================================*/ p, blockquote, ul, ol, dl, table, pre { margin: 15px 0; } /* HEAD

audio标签自动播放在安卓播放正常,IOS不能自动播放

<img class="musicPic" src="./music.png" id="musicIcon" /> <audio style="display: none;" autoplay="autoplay" id="autoplay" controls="controls"loop="loop" preload="

微信的audio无法自动播放的问题

一.问题 最近做了一个html5的项目,里面涉及到音乐播放,项目要求音乐进入页面就自动播放,于是我就想到了html5的audio标签,将mp3引入进去. 1.在audio标签里引入了autoplay属性: 经过测试发现Android上可以自动播放,ios上无法自动播放. <audio id="audio" src="1.mp3" autoplay="autoplay"></audio> 2.在js文件中执行audio.pl

ios微信上无法自动播放音频的情况

今天做个html5需要自动播放音频,发现在ios下autoplay="autoplay"是失效的 就想着强制用js强制播放 document.getElementById('music').play(); 发现并没有用 加上这段代码后才有作用 document.getElementById('music').play(); document.addEventListener("WeixinJSBridgeReady", function () {//监听微信准备就绪

关于手机端audio无法自动播放问题解决方法

此方法可能只适用与用微信浏览器打开的页面... <audio id="a" src="bg.mp3" autoplay></audio> 第一步:引入微信js <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script> 第二步:wx.config wx.config({ debug: false, // 开启调试模式,调

android audio无法自动播放

audio无法在android4.4+和ios6以上的版本自动播放,因为他们出于安全考虑,做了限制.必须用户自己手工点击才能播放,程序是控制不了播放的. 整死我了,整整搞了2天,查不出所以然,原来就这么回事. 下次遇到问题还是要拓宽思路,多百度.埋头研究是事半功倍的.

解决 iOS 9.1 微信内置浏览器中html audio 不能自动播放的问题

使用微信现在提供过的微信js-sdk 在ready中进行播放便可. 首先引用js : <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script> 然后写方法 : function autoPlayAudio1() { wx.config({ // 配置信息, 即使不正确也能使用 wx.ready debug: false, appId: '', timestamp: 1, nonce

html - html5 audio 音乐自动播放,循环播放等

转自:http://blog.csdn.net/u012246458/article/details/50618759 audio播放音乐 [java] view plain copy <audio id="audio" src="images/openspeech.mp3" style="opacity:0" preload="auto" controls loop hidden="true"/&g