【前端】手机端网页自动播放背景音乐相关资料

做手机端活动页面的时候,经常会遇到打开页面自动播放背景音乐的需求。但是很多开发人员在实现这个需求时会遇到各种各样不能自动播放或有些场景可以有些场景不行的现象,现在总结一下手机端自动播放背景音乐的资料。

程序媛镇楼

首先从正常的代码开始:

<audio autoplay  src="url.mp3"></audio>

【andriod】
支持场景:
QQ浏览器
QQ(QQ内置了QQ浏览器,当然能打开)
微信(都是腾讯的,难道内核一样?)
系统自带浏览器

不支持场景:
chrome

【ios】
支持场景:

不支持场景:
safari

然后是改进的代码开始:
方案1:用video的append,然而并没什么卵用

<div id="bgmvideo">
</div>

<script type="text/javascript">
$(document).ready(function () {
            if (!sessionStorage.getItem("bgm")) {
                 $("#bgmvideo").append(
                    '<audio src="url.mp3" autoplay hidden></audio>'
                );
                sessionStorage.setItem("bgm", 1)
            }
        })
</script>

方案2:针对大部分IOS系统和少部分不支持自动播放的Android微信
监听WeixinJSBridgeReady事件、DOMContentLoaded事件
微信的JS API建立在微信壳浏览器的内置JS对象WeixinJSBridge上,WeixinJSBridge并不是WebView一打开就有了,客户端需要初始化这个对象,当这个对象准备好的时候,客户端会抛出事件"WeixinJSBridgeReady"。
发现部分机型,监听DOMContentLoaded和load事件,在回调中也可以播放音乐;
所以,为了保险起见,可以同时监听两个事件,以增强其适用性。
代码如下:

<audio style="display:none; height: 0" id="bg-music" preload="auto" src="url.mp3" loop="loop"></audio>
document.addEventListener('DOMContentLoaded', function () {
    function audioAutoPlay() {
        var audio = document.getElementById('bg-music');
            audio.play();
        document.addEventListener("WeixinJSBridgeReady", function () {
            audio.play();
        }, false);
    }
    audioAutoPlay();
});

方案3:触屏播放,等同于按了播放按钮

$('html').one('touchstart',function(){
audio.play();
}
});

("body").one("touchstart",
audio.play();
});

优点:兼容所有场景。
缺点:不是真正的自动播放,用户不触屏就不会播放。且为避免重复播放,应再改进为在新建全屏透明层上触发事件,触发后同时关闭该层。
备注:此代码测试未通过。

方案4:一个自信满满的方案,然而测试后,各种场景都无效,还不如默认的……
http://blog.csdn.net/sinat_33750162/article/details/54630112

其他参考:
部分App不支持webview音乐自动播放
  解决方案:1.壳浏览器支持;2.通过手势事件播放音乐

  完整代码:

// 音乐播放
function autoPlayMusic() {
    // 自动播放音乐效果,解决浏览器或者APP自动播放问题
    function musicInBrowserHandler() {
        musicPlay(true);
        document.body.removeEventListener('touchstart', musicInBrowserHandler);
    }
    document.body.addEventListener('touchstart', musicInBrowserHandler);

    // 自动播放音乐效果,解决微信自动播放问题
    function musicInWeixinHandler() {
        musicPlay(true);
        document.addEventListener("WeixinJSBridgeReady", function () {
            musicPlay(true);
        }, false);
        document.removeEventListener('DOMContentLoaded', musicInWeixinHandler);
    }
    document.addEventListener('DOMContentLoaded', musicInWeixinHandler);
}
function musicPlay(isPlay) {
    var media = document.querySelector('#bg-music');
    if (isPlay && media.paused) {
        media.play();
    }
    if (!isPlay && !media.paused) {
        media.pause();
    }
}
时间: 2024-11-08 19:02:14

【前端】手机端网页自动播放背景音乐相关资料的相关文章

手机上传-手机端网页头像上传裁切,浏览器不支持JCROP?有别的办法么?

问题描述 手机端网页头像上传裁切,浏览器不支持JCROP?有别的办法么? 在PC上通过JCROP插件,实现了上传预览并裁切,可是用手机的浏览器打开来却什么都不显示... 解决方案 试试这个,看了源代码有区分是佛触屏设备的 https://github.com/acornejo/jquery-cropbox 解决方案二: 我在手机上的浏览器试了下,还是无法调整位置哦...

求高手帮助!手机端网页上传照片有没有js+.net语言,项目用的MVC

问题描述 遇到其他的手机端上传图片个别用的是php,这点不会!想找个.net版的!求帮助 解决方案 解决方案二:上传图片前端都一样,都是依赖js,后端就是接收数据而已,这个各个语言怎么实现随便找下就可以了解决方案三:bootstrap

手机端网页点击链接触发自动拨打或保存电话的示例代码_javascript技巧

通过网页拨打电话 <a href="tel://110 ">拨打电话</a> 这种方式塞班.安卓与iphone都支持 切记一定这这么写,不要自己写方法再去调用 例如;<a href="javascript:phone('+phone+') ">拨打电话</a> function phone(date){ window.location.href = 'tel://' + date; } 这样写IOS不兼容 以上是小编为

在Excel中插入可以自动播放的背景音乐的方法

  现有的网上比较通行的几种Excel自动播放背景音乐的方案有以下这些: 1.使用Windows Media Player.WebBrowser等类似控件. 缺点是不支持嵌入音频文件,这就意味着Excel文件需要拖家带口随身携带附加的音频文件才能正常播放.而且部分需要VBA编程代码支持. 2.使用插入对象的方式,插入音频文件对象可以实现文件嵌入,但是不支持自动播放.如果需要让音乐自动播放,需要用编程的方法调用OLEobject的Verb:=xlPrimary方法来激活嵌入对象,并且会打开媒体播放

前端常见兼容性问题系列7: 部分浏览器不支持音频自动播放

1.问题又来了 曾做一个活动页,需要打开页面时自动播放一小段背景音乐.因为音乐持续时间非常短,所以设计这个页面时,没想要设置一个播放控制按钮.一开始我也以为确实没有必要.开发中,用我的老古董机器小米2S测了也没发现啥问题. 但是,用iOS机器测试时,问题就来了,有的平台中可以听到背景音乐(如iOS中的支付宝),有的则始终出不来(如iOS 中的Safari浏览器).用JavaScript来load音频,再自动触发音频的play()方法,也没有效果. 2.定位问题.查找原因 Google一番发现原来

手机QQ名片个性音乐如何设置?QQ名片背景音乐自动播放方法

手机QQ名片添加背景音乐方法: 1.登录手机QQ,找到个人中心,点击头像进入,如图: 2.在个人QQ名片中,我们可以看到右上角音乐图标,点击进入; 3.在QQ名片个性音乐里,我们可以看到系统推荐的音乐,选择自己喜欢的音乐点击添加即可,当然,你也可以搜索自己喜欢的,只要QQ音乐里有的资源,都可以添加! 4.由于小编不是QQ绿钻用户,所以无法在QQ名片背景中添加音乐的选项,如果你是绿钻用户的话,上面的教程就是为你而准备的哦!   手机QQ名片背景音乐怎么自动播放? 1.登录手机QQ,找到个人中心,点

优酷-手机端视频播放问题。。

问题描述 手机端视频播放问题.. 放到优酷上的视频,在自己网站的PC端上可以播放,但是放到自己网站的手机端却不能播放了,什么原因,会显示"视频信息出错"的提示,有的可以播有的不行,怎么破 解决方案 关于视频播放的问题呢 解决方案二: 手机端视频播放对视频文件的格式有要求,同时不同内核的浏览器对视频的支持也不一样. 解决方案三: ,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力! 解决方案四: 是不是你手机端的播放视频控件不能支持对应youku的视频内容.

【原】[webkit移动开发笔记]之无法自动播放的audio元素

HTML5新增了video元素和audio元素,替代了传统HTML4使用复杂的object元素与embed来播放视频或者音频的方法.这次的一个项目,产品经理要求手机加载开始时播放音乐,想到播放音乐,又是在ios和android平台,那audio元素必然是首选. 一.audio的基本知识  audio:标签定义声音,比如音乐或其他音频流.  二.audio的属性 三.audio的写法 写法一: <audio src="baishu.mp3" auto loop>你的浏览器还不

网页上的播放器相关参数说明

网页 网页上的播放器相关参数说明(默认0为否,-1或1为是) <object classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95" id="MediaPlayer1" width="286" height="225"><param name="AudioStream" value="-1"><param n