H5进入页面音乐播放兼容微信,浏览器,APP内嵌
最近公司接到要做个活动页,需要背景音乐要进入页面就播放,H5与浏览器都要兼容,但看了浏览器好像禁止页面进入播放音乐,然后就找各种文档。废话不多说上代码。。。
HTML代码
<input type="hidden" value="<{$system_config.statics_url}>/activity/images/music2.mp3" id="audio">
<audio autoplay="autoplay" controls loop hidden="true" id="bgmusic" src="" >
您的浏览器不支持 audio 元素。
</audio>
<!--音乐背景图logo-->
<img src="<{$system_config.statics_url}>/activity/images/ic_yy@2x.png" class="audios_icon play_audios" id="paly_btn">
js代码
$(function(){
let videopaly = true;
let startflag = true;
// drawid('tulip','canvas');
var u = navigator.userAgent;
var isWeixin = u.toLowerCase().indexOf('micromessenger') !== -1;
var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
var android= u.indexOf('Android') > -1 || u.indexOf('Linux') > -1
function BGMAutoPlayMgr/* solveAndroidBGMAutoplay */(url) {
this.audioContext = new (window.AudioContext || window.webkitAudioContext || window.mozAudioContext)();
this.sourceNode = null;
this.buffer = null;
this.isPlayingBGM = false;
this.toggleBGM = function () {
if (typeof this.sourceNode == 'object') {
if (this.isPlayingBGM) {
this.sourceNode.stop();
this.isPlayingBGM = false;
} else this._playSourceNode();
}
}
this._playSourceNode = function () {
const audioContext = this.audioContext;
audioContext.resume();
const _sourceNode = audioContext.createBufferSource();
_sourceNode.buffer = this.buffer;
_sourceNode.loop = true;
_sourceNode.connect(audioContext.destination);
_sourceNode.start(0);
this.sourceNode = _sourceNode;
this.isPlayingBGM = true;
}
let loadAndAutoPlay = (audioUrl) => {
const audioContext = this.audioContext;
const xhr = new XMLHttpRequest();
xhr.open('GET', audioUrl, true);
xhr.responseType = 'arraybuffer';
xhr.onreadystatechange = () => {
if (xhr.status < 400 && xhr.status >= 200 && xhr.readyState === 4) {
audioContext.decodeAudioData(xhr.response, buffer => {
this.buffer = buffer;
try {
WeixinJSBridge.invoke("getNetworkType", {}, () => this._playSourceNode());
} catch(err){
this._playSourceNode();
}
});
}
}
xhr.send();
}
loadAndAutoPlay(url);
loadAndAutoPlay = null;
}
//判断是安卓手机和微信环境,是toggleBGM(),不是就调playMusic
if(android || isWeixin ){
//微信
$('#audio').hide()
$('#bgmusic').hide()
const bgm = new BGMAutoPlayMgr(musicUrl+'/activity/images/music2.mp3');
var isPlay=true
$('#paly_btn').click(function(){
if(isPlay){
$(".audios_icon").removeClass("play_audios")
}else{
$(".audios_icon").addClass("play_audios")
}
isPlay=!isPlay
bgm.toggleBGM();
})
} else {
$("audio").attr("src",$("#audio").val());
$('#paly_btn').addClass('play_audios');
playMusic()
}
//苹果浏览器
function playMusic(){
document.body.addEventListener('touchstart', function(){
if(startflag){
startflag = false;
document.getElementById("bgmusic").play();
$('#paly_btn').addClass('play_audios');
videopaly = true;
}
});
document.addEventListener('visibilitychange', function() {
var isHidden = document.hidden;
if (isHidden) {
document.getElementById("bgmusic").pause();
$('#paly_btn').removeClass('play_audios');
videopaly = false;
} else {
document.getElementById("bgmusic").play();
$('#paly_btn').addClass('play_audios');
videopaly = true;
}
});
$("body").on('click','#paly_btn',function(){
if(videopaly){
document.getElementById("bgmusic").pause();
$(this).removeClass('play_audios');
videopaly = false;
} else {
document.getElementById("bgmusic").play();
$(this).addClass('play_audios');
videopaly = true;
}
})
}
})
因为是先下载音乐资源,背景音乐越小越好(我的是1M),不然下载需要时间,出现延迟播放的情况
如有侵权请联系作者删除,谢谢
文档引用解决H5项目微信浏览器安卓系统无法自动播放背景音乐的问题_YZHD的博客-CSDN博客
H5进入页面音乐播放兼容微信,浏览器,APP内嵌相关推荐
- video.js兼容微信浏览器,(播放.m3u8视频源)解决微信浏览器黑屏问题
video.js兼容微信浏览器,(播放.m3u8视频源)解决微信浏览器黑屏问题 一.问题描述: 在h5做根据视频源直播功能时,在浏览器能打开视频,但是在部分安卓机和苹果机在微信浏览器打开会出现黑屏的状 ...
- html5微信自动播放视频,科技常识:HTML5页面音视频在微信和app下自动播放的实现方法...
今天小编跟大家讲解下有关HTML5页面音视频在微信和app下自动播放的实现方法 ,相信小伙伴们对这个话题应该有所关注吧,小编也收集到了有关HTML5页面音视频在微信和app下自动播放的实现方法 的相关 ...
- html音视频app制作,怎么实现HTML5页面音视频在微信和app下自动播放
怎么实现HTML5页面音视频在微信和app下自动播放 发布时间:2020-09-28 15:52:53 来源:亿速云 阅读:90 作者:小新 这篇文章给大家分享的是有关怎么实现HTML5页面音视频在微 ...
- 小程序嵌套h5页面_快速小程序开发之微信小程序内嵌 H5
简介:微信小程序中可以直接运行 web 页面,这一新组件 web-view 的产生,可能直接导致小程序数量迎来一波高峰.本篇博文将从业务选型,微信小程序后台配置,使用 web-view 完成登录业务以 ...
- 一个PHP文件搞定支付宝系列之手机网站支付(兼容微信浏览器)
网上的很多PHP支付宝支付接入教程都颇为复杂,且需要配置和引入较多的文件,本人通过整理后给出一个单文件版的,希望可以给各位想接入支付宝支付的带来些许帮助和借鉴意义. 一个PHP文件搞定支付宝系列:ht ...
- php 如何用op浏览器开发手机网站,PHP实现手机网站支付(兼容微信浏览器)
网上的很多PHP支付宝支付接入教程都颇为复杂,且需要配置和引入较多的文件,本人通过整理后给出一个单文件版的,希望可以给各位想接入支付宝支付的带来些许帮助和借鉴意义. 推荐:<PHP视频教程> ...
- 手机浏览器只保存php文件夹,一个PHP文件搞定支付宝系列之手机网站支付(兼容微信浏览器)...
网上的很多PHP支付宝支付接入教程都颇为复杂,且需要配置和引入较多的文件,本人通过整理后给出一个单文件版的,希望可以给各位想接入支付宝支付的带来些许帮助和借鉴意义. 在手机浏览器下打开实现效果 在微信 ...
- 一个PHP文件搞定支付宝系列之手机网站支付(兼容微信浏览器) 转
网上的很多PHP支付宝支付接入教程都颇为复杂,且需要配置和引入较多的文件,本人通过整理后给出一个单文件版的,希望可以给各位想接入支付宝支付的带来些许帮助和借鉴意义. 一个PHP文件搞定支付宝系列:ht ...
- 记录:app内嵌H5页面分享到微信后,在安卓手机打开白屏,苹果手机正常渲染的问题始末
**背景:**app内嵌的一个个人名片页面需要分享到微信,测试环境下,分享到微信后,安卓和苹果手机都能正常渲染,生产环境苹果手机没问题,安卓手机打开分享的链接,页面一直空白. **原因分析:**单独加 ...
最新文章
- 8位可控加减法电路设计_100以内数的认知也加减法详解
- 从0开始架构一个IOS程序—— 02 — 设置启动图标与启动页面
- m7405d粉盒清零方法_联想打印机计数器怎么清零?一体机硒鼓怎么清零?看这一篇就够...
- java8 stringbuilder_有了Java8的“+”真的可以不要StringBuilder了吗
- 使用CPU时间戳进行高精度计时
- jpa 人大金仓数据库方言_兼容认证 | 人大金仓数据库管理系统完成与浪潮产品兼容认证...
- 北航计算机组成原理课程设计-2020秋 PreProject-Logisim-Logisim仿真与调试应用与挑战
- 计算机指令集编程教程,PLC编程语言入门,常用指令集汇总分享
- 【计量经济学导论】08. 平稳时间序列
- 【软件测试基础】控制用例粒度:测试点的组合和拆分
- mysql超键 候选键_菜鸟学数据库——超键、候选键、主键、外键
- MTSP问题遗传算法解决及其代码与案例
- 不想在网易博客写技术文章了
- Android平台下的图片/视频转Ascii码图片/视频 (一)
- python argparse 和opencv模块的组合使用_如何利用Python3和OpenCV对比两张图片的不同,提取差异性...
- typescript 装饰器
- php-获取从今天开始计算第5个工作日的日期
- 软文营销登顶销售奇迹的4U定律你知道吗?
- ML(10) - 模型训练技巧
- java练习题——手动输入成绩, 每次加分百分之二十。
热门文章
- set集合及(交集,差集,并集)计算
- 孔 孟 颜 曾四姓通天谱(孔、孟、颜、曾、卜、闵、冉)
- easyUI实现日历
- 真实|为什么要做有灵魂的程序员?
- mc屠龙后服务器显示,我的世界:玩家前往末地屠龙,却一无所获,返回家时才知道闯祸了...
- app混合开发之添加调试控制台vconsole
- bootstrap之navbar样式
- CSS —— 选择器(带你深入了解如何使用选择器)
- killall command not found
- 2021最新 萝卜视频前端打包教程_Android Studio4.1版 java原生安卓打包视频教程