收藏
回答

webview里的背景音乐,在退出时,怎么关闭

问题模块
API和组件

小程序里使用里webview组件,组件里放的网页有背景音乐。当退出小程序时,这个背景音乐还在播放。能否有办法做到,当退出小程序,背景音乐就没有了?

最后一次编辑于  2017-12-04  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

6 个回答

  • 老梁
    老梁
    2018-09-11

    我也遇到了这个问题,ios下关闭小程序还会继续播放视频(其实你下滑状态栏可以看到有视频播放,不关闭会一直播放的),最后用了浏览器的visibilitychange 解决了(后台时暂停播放),具体代码如下。

    var hiddenProperty = 'hidden' in document ? 'hidden' :
        'webkitHidden' in document ? 'webkitHidden' :
        'mozHidden' in document ? 'mozHidden' :

         null;


    if (hiddenProperty) {

        var visibilityChangeEvent = hiddenProperty.replace(/hidden/i, 'visibilitychange');

        var onVisibilityChange = function() {

        if (document[hiddenProperty]) {

            !MpMovie.video.paused && MpMovie.video.pause();

        }

    };


    document.addEventListener(visibilityChangeEvent, onVisibilityChange);


    相关资料

    https://developer.mozilla.org/zh-CN/docs/Web/Events/visibilitychange

    2018-09-11
    赞同 3
    回复 1
    • 皓月叶舞
      皓月叶舞
      2018-10-22

      这个方案可行,还可以在if里面判断重新进入, 如果是暂停状态,则 让其继续播放

      2018-10-22
      回复
  • 黄思程
    黄思程
    2017-12-04

    可以在h5的pagehide事件里,暂停音乐

    2017-12-04
    赞同
    回复 1
    • 林蛋凡
      林蛋凡
      2018-10-22

      小程序退出是退到后台的  pagehide根本侦听不到

      2018-10-22
      回复
  • Mr.xu
    Mr.xu
    04-17

    微信小程序退出的时候关闭web-view  H5的音乐代码如下:


    (function () {

     
                        var hidden = "hidden";
      
                        //各个浏览器属性兼容
                        if (hidden in document)
                            document.addEventListener("visibilitychange", onchange);
                        else if ((hidden = "mozHidden"in document)
                            document.addEventListener("mozvisibilitychange", onchange);
                        else if ((hidden = "webkitHidden"in document)
                            document.addEventListener("webkitvisibilitychange", onchange);
                        else if ((hidden = "msHidden"in document)
                            document.addEventListener("msvisibilitychange", onchange);
      
                        else if ("onfocusin" in document)
                            document.onfocusin = document.onfocusout = onchange;
      
                        else
                            window.onpageshow = window.onpagehide = window.onfocus = window.onblur = onchange;
      
                        //主要功能代码
                        //网页状态改变事件
                        function onchange(evt) {
                            if (document[hidden]) {
                                $('#audio').removeClass('play');
                                document.getElementById("bgm").pause();
    //                            document.title = "false";
                            else {
    //                            alert('显示');
                                setTimeout(function () {
                                    $('#audio').addClass('play');
                                    document.getElementById("bgm").play();
    //                                document.title = "true";
                                },100);
                            }
                        }
      
      
                        if (document[hidden] !== undefined)
                            onchange({
                                type: document[hidden] ? "blur" "focus"
                            });

                    })();




    04-17
    赞同 1
    回复
  • 你以为的我以为地以为以为为~
    你以为的我以为地以为以为为~
    2018-02-07

    请问使用pagehide问题解决了吗?

    2018-02-07
    赞同
    回复
  • 旋转的木马1
    旋转的木马1
    2018-01-18

    你好,怎么解决的

    2018-01-18
    赞同
    回复
  • 漫无止境
    漫无止境
    2017-12-04

    借楼问两个“已解决”的问题:

    连续点击video视频列表偶尔会报错

    背景音频管理器 backgroundAudioManager遇到的问题求解

    2017-12-04
    赞同
    回复