美文网首页
完整的背景音乐自动播放的解决方案,并且有模拟音乐开关的按钮。

完整的背景音乐自动播放的解决方案,并且有模拟音乐开关的按钮。

作者: yyshang | 来源:发表于2019-04-15 16:57 被阅读0次

说明:safari下初始化按钮显示‘正在播放’,但并没有声音,当用户触摸到屏幕时,声音才播放。若用户一次触摸屏幕就是按钮位置,则按钮显示‘停止播放了’,这时没有背景音乐;再点一次,按钮显示‘正在播放’,同时播放。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
</head>
<body>
    <audio id='audio' src='http://go.163.com/2018/0209/mengniu/audio/bgm.mp3' loop></audio>
    <button id='status' onclick='triggerBgMusic()'>播放按钮</button>
    <script>
        //----------页面初始化------------
        var audio = document.getElementById('audio');
        if(sessionStorage.bgmusic=='pause'){
            playBgMusic(false);
        }else{
            playBgMusic(true);
             //----------处理自动播放------------
            //--创建页面监听,等待微信端页面加载完毕 触发音频播放
            document.addEventListener('DOMContentLoaded', function () {
                function audioAutoPlay() {
                    playBgMusic(true);
                    document.addEventListener("WeixinJSBridgeReady", function () {
                        playBgMusic(true);
                    }, false);
                }
                audioAutoPlay();
            });
            //--创建触摸监听,当浏览器打开页面时,触摸屏幕触发事件,进行音频播放
            function audioAutoPlay() {
                playBgMusic(true);
                document.removeEventListener('touchstart',audioAutoPlay);
            }
            document.addEventListener('touchstart', audioAutoPlay);
        }
        //----------处理页面激活------------
        var hiddenProperty = 'hidden' in document ? 'hidden' :    
        'webkitHidden' in document ? 'webkitHidden' :    
        'mozHidden' in document ? 'mozHidden' :    
        null;
        var visibilityChangeEvent = hiddenProperty.replace(/hidden/i, 'visibilitychange');
        var onVisibilityChange = function(){
            if (!document[hiddenProperty]) {    
                if(!sessionStorage.bgmusic||sessionStorage.bgmusic=='play'){
                    audio.play();
                }
            }else{
                audio.pause();
            }
        }
        document.addEventListener(visibilityChangeEvent, onVisibilityChange);
        //---------背景音乐开关----------
        function triggerBgMusic(){
            if(!sessionStorage.bgmusic||sessionStorage.bgmusic=='play'){
                playBgMusic(false);
            }else{
                playBgMusic(true);
            }
        }
        //---------音乐播放和暂停----------
        function playBgMusic(val){
            if(val){
                audio.play();
                sessionStorage.bgmusic='play';
                document.getElementById('status').innerHTML='正在播放';
            }else{
                audio.pause();
                sessionStorage.bgmusic='pause';
                document.getElementById('status').innerHTML='停止播放了';
            }
        }
    </script>
</body>
</html>

引至:https://blog.csdn.net/joyce_lcy/article/details/79347383

相关文章

网友评论

      本文标题:完整的背景音乐自动播放的解决方案,并且有模拟音乐开关的按钮。

      本文链接:https://www.haomeiwen.com/subject/qaqpwqtx.html