zoukankan      html  css  js  c++  java
  • H5背景音乐自动播放(兼容微信IOS,进程后台切换自动停止播放,本文例子为Vue写法)

    <template>
        <audio src="./static/music.mp3" id="bgMusic" preload="auto" loop></audio>
        <div class="bgMusicBtn" @click="bgMusicPlayOrPause('bgMusic')">
            <img :src="playFlag ? playImg : pauseImg" :class="{rotate: playFlag}">
        </div>
    </template>
     
    export default {
        data() {
            return {
                playFlag: true,
                playImg: require('../../static/play.png'),
                pauseImg: require('../../static/pause.png'),
                clickMusicBtn: false
            }
        },
        mounted() {
            this.audioAutoPlay('bgMusic');
    
            document.addEventListener("visibilitychange", (e) => { // 兼容ios微信手Q
                if (this.clickMusicBtn) { // 点击了关闭音乐按钮
                    if (this.playFlag) {
                        this.audioAutoPlay('bgMusic');
                        this.playFlag = true;
                    } else {
                        this.audioPause('bgMusic');
                        this.playFlag = false;
                    }
    
                    text.innerHTML = e.hidden;
                    if (e.hidden) {  // 网页被挂起
                        this.audioAutoPlay('bgMusic');
                        this.playFlag = true;
                    } else { // 网页被呼起
                        this.audioPause('bgMusic');
                        this.playFlag = false;
                    }
                } else { // 未点击关闭音乐按钮
                    if (this.playFlag) {
                        this.audioPause('bgMusic');
                        this.playFlag = false;
                    } else {
                        this.audioAutoPlay('bgMusic');
                        this.playFlag = true;
                    }
    
                    text.innerHTML = e.hidden;
                    if (e.hidden) {  // 网页被挂起
                        this.audioPause('bgMusic');
                        this.playFlag = false;
                    } else { // 网页被呼起
                        this.audioAutoPlay('bgMusic');
                        this.playFlag = true;
                    }
                }
            });
        },
    methods: {
        bgMusicPlayOrPause(id) {
            this.clickMusicBtn = !this.clickMusicBtn;
            if (this.playFlag) {
                this.audioPause(id);
                this.playFlag = false;
            } else {
                this.audioAutoPlay(id);
                this.playFlag = true;
            }
        },
        audioPause(id) {
            var audio = document.getElementById(id);
            audio.pause();
            document.addEventListener("WeixinJSBridgeReady", function () {
                audio.pause();
            }, false);
            document.addEventListener('YixinJSBridgeReady', function () {
                audio.pause();
            }, false);
        },
        audioAutoPlay(id) {
            var audio = document.getElementById(id);
            audio.play();
            document.addEventListener("WeixinJSBridgeReady", function () {
                audio.play();
            }, false);
            document.addEventListener('YixinJSBridgeReady', function () {
                audio.play();
            }, false);
        }
     }
    }
  • 相关阅读:
    C#语法相比其它语言比较独特的地方
    Git源码管理工具使用
    2018年第九届蓝桥杯题目(C/C++B组)汇总
    Unity插件系列之二维码
    在本机使用虚拟机安装一个linux系统,并搭建ftp服务器
    用UE4蓝图制作FPS_零基础学虚幻4第二季
    【坦克大战】Unity3D多人在线游戏(泰课的坦克大战--旋转的螺丝钉)
    Drag(拖拽)和Move(移动)两个脚本
    解决:Word在试图打开文件时遇到错误
    2018年的一些记录,共勉
  • 原文地址:https://www.cnblogs.com/Man-Dream-Necessary/p/9359663.html
Copyright © 2011-2022 走看看