兼容IE的语音播放

主要部分是用一个div,检测当前浏览器是否是IE,如果是就在div内生成一个bgsound标签,模拟播放背景音乐。如果是非IE浏览器,就在div里生成video标签。

1.HTML内容,创建一个标签

<object id="snd_chrome" width="0px" height="0px" type="audio/x-wav" data=""></object>

2.先判断浏览器是否是IE或者Edge浏览器

var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串

var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1; //判断是否IE<11浏览器 

var isEdge = userAgent.indexOf("Edge") > -1 && !isIE; //判断是否IE的Edge浏览器 

var isIE11 = userAgent.indexOf('Trident') > -1 && userAgent.indexOf("rv:11.0") > -1;

3.判断不同浏览器创建语音标签,函数参数(ID,语音播放路径,类型,是否循环播放);

function audioplayer(id, url, type, loop){

    var audioplayer = document.getElementById(id);

    if(audioplayer!=null){

      document.body.removeChild(audioplayer);

    }

    if(isIE || isIE11 || isEdge){

        var player = document.createElement('bgsound');

        player.id = id;

        player.src = url;

        player.setAttribute('autostart', 'true');

        if(loop){

            player.setAttribute('loop', 'infinite');

        }

        document.body.appendChild(player);

    }else{

        var player = document.createElement('audio');

        player.id = id;

        player.setAttribute('autoplay','autoplay');

        if(loop){

          player.setAttribute('loop','loop');

        }

        document.body.appendChild(player);

        var source = document.createElement('source');

        source.src = url;

        source.type= type;

        player.appendChild(source);

    }

  } 

4.非IE浏览器时,监听语音播放是否停止

// 监听语音是否播放结束,谷歌版

function audioListener(){

    //测试audio监听结束事件

    var audio=document.querySelector('audio');

        if(audio){

        audio.loop = false;

        audio.addEventListener('ended', function () { 

            //do something .....

        }, false);

    }

}

5.IE或者Edge浏览器使用的bgsound,暂时没有写出监听事件,大家一起加油!



作者:爷爷的毛丫头
链接:https://www.jianshu.com/p/405db661a23e
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
posted @ 2021-06-09 18:40  panchanggui  阅读(198)  评论(0编辑  收藏  举报