[TOC]
## 解决ios音乐不自动播放
时间:2018.11.08
```
// 解决ios音乐不自动播放
myobj = document.getElementById("main_audio");
myaudio = $('#main_audio_ie8').attr('src');
myobj.src = myaudio;
document.addEventListener("WeixinJSBridgeReady", function () {
myobj.play();
}, false);
```
## 方法一:h5 解决苹果手机不能自动播放音乐
### 1、引入JS
`引用:<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script> `
### 2、功能实现
```
<script>
function autoPlayAudio() {
wx.config({
// 配置信息, 即使不正确也能使用 wx.ready
debug: false,
appId: '',
timestamp: 1,
nonceStr: '',
signature: '',
jsApiList: []
});
wx.ready(function() {
var globalAudio=document.getElementById("bgMusic");
globalAudio.play();
});
};
// 解决ios音乐不自动播放的问题
autoPlayAudio();
</script>
```
### 3、说明
只限微信使用,浏览器不行
### 4、网址参考
https://www.cnblogs.com/bky-seed/archive/2017/12/14/8036569.html
## 方法 二:IOS音乐不能自动播放
### 1、问题描述
在微信端开发H5的时候,audio标签在苹果机上无法进行自动播放
### 2、原因分析
```
<audio controls="controls" id="music" loop="loop">
<source src="./assets/sound/music.mp3" type="audio/ogg" />
<source src="./assets/sound/music.ogg" type="audio/ogg" />
</audio>
```
这是我html上的代码,经过运行发现android机上能够良好的呈现并播放,但是在苹果机上呈现的是一条白杠和一个无法使用的三角形按钮。
使用Audio标签的属性进行检测
```
Media = document.getElementById("music");
alert(Media.networkState);// 状态码显示为3,表示Audio没有找到资源路径
```
于是尝试使用js去注入一个路径,发现苹果机的音乐播放问题被解决了
```
Media.src = "./assets/sound/music.mp3";
Media.play();
```
### 3、问题拓展
毕竟我和大家遇到的问题不一样,也许这个方法并不能解决大家的问题。这里拓展一下其他的实现方法。
1. 应该是出于IOS系统本身的设计规范缘故,会不允许音乐的自动播放功能。这里我们可以给页面一个touch事件来触发播放功能。
2. 微信自己提供了一个**WeixinJSBridgeReady**事件,我们可以监听这个事件触发播放功能。[微信官方API](http://qydev.weixin.qq.com/wiki/index.php?fulltext=&search=WeixinJSBridgeReady)
```
document.addEventListener("WeixinJSBridgeReady", function () {
Media.play();
}, false);
```
### 4、网址参考
微信端开发H5页面的时候,audio标签在苹果机上无法进行自动播放
https://blog.csdn.net/wp_boom/article/details/52161138?locationNum=7
## 方法三:函数
手机端网页苹果手机用H5audio标签无法自动播放音乐处理方法,代码如下;
### 1、HTML
```
<audio id="bgmusic" src="mp3.mp3" autoplay="autoplay" loop="loop" style="display: block; width: 3%; height:3%;"></audio>
```
### 2、JS
```
<script type="text/javascript">
document.addEventListener('DOMContentLoaded',
function() {
functionaudioAutoPlay() {
varaudio = document.getElementById('bgmusic');
audio.play();
document.addEventListener("WeixinJSBridgeReady",
function() {
audio.play()
},
false)
}
audioAutoPlay()
});
</script>
```
### 3、网址参考
苹果手机用H5audio标签无法自动播放音乐处理方法
https://blog.csdn.net/wait9166/article/details/77573963?utm_source=blogxgwz0
## 方法四:iOS苹果和微信中音频和视频实现自动播放的方法
通过下面的方式可以解决,在iPhone手机微信中正常自动播放。
必须在微信Weixin JSAPI的WeixinJSBridgeReady才能生效,猜测微信接口做了处理~
```
<audio preload="preload" controls id="car_audio" src="http://media.xitaoinfo.com/ei_zamenjiehunba.mp3" loop></audio>
<video id="video" controls="" preload="none" mediagroup="myVideoGroup" poster="http://media.w3.org/2010/05/sintel/poster.png">
<source id="mp4" src="http://media.w3.org/2010/05/sintel/trailer.mp4" type="video/mp4">
<source id="webm" src="http://media.w3.org/2010/05/sintel/trailer.webm" type="video/webm">
<source id="ogv" src="http://media.w3.org/2010/05/sintel/trailer.ogv" type="video/ogg">
<p>Your user agent does not support the HTML5 Video element.</p>
</video>
<!-- 必须加在微信api资源 -->
<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
<script>
//一般情况下,这样就可以自动播放了,但是一些奇葩iPhone机不可以
document.getElementById('car_audio').play();
//必须在微信Weixin JSAPI的WeixinJSBridgeReady才能生效
document.addEventListener("WeixinJSBridgeReady", function () {
document.getElementById('car_audio').play();
document.getElementById('video').play();
}, false);
</script>
```
https://www.cnblogs.com/kevin1220/p/5807466.html
微信页面的音乐自动播放实现:
https://www.cnblogs.com/kevin1220/p/6429366.html
## 方法五、一种解决h5页面背景音乐不能自动播放的方案
场景:微信、浏览器、App
普通解决方案:采用audio标签的autoplay属性
### 大部分IOS系统和少部分Android微信不支持自动播放
【解决方案】微信的JS API建立在微信壳浏览器的内置JS对象WeixinJSBridge上,WeixinJSBridge并不是WebView一打开就有了,客户端需要初始化这个对象,当这个对象准备好的时候,客户端会抛出事件"WeixinJSBridgeReady"。
发现部分机型,监听DOMContentLoaded和load事件,在回调中也可以播放音乐;
所以,为了保险起见,可以同时监听两个事件,以增强其适用性。
【代码如下】
`<audio style="display:none; height: 0" id="bg-music" preload="auto" src="../static/videos/bg-music.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();
});
```
### 部分Android浏览器和所有IOS下Safari浏览器不支持自动播放
解决方案:通过手势事件播放音乐
(1) 监听body的touchstart事件,回调中播放音乐;
缺点:部分元素的touch事件可能会阻止冒泡,需要在对应的地方调起播放音乐函数
(2) 可以增加透明层,点击到透明层,播放音乐,关闭透明层;
缺点:第一次点击按钮元素可能不响应,造成用户体验上的伤害。
部分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();
}
}
```
网址参考:https://www.cnblogs.com/wmhuang/p/5452259.html
- Layer无刷新不跳转弹框提示信息
- 整合ThinkPHP+实用代码
- TP整合Layer插件实现无刷新
- 自定义助手函数
- 添加信息失败后不跳转
- 三种无限级分类
- TP常用代码
- 自定义公共函数
- TP模型管理专题
- TP模型管理之添加模型
- sfox_newmodel.sql
- TP模型管理之删除模型
- TP模型管理之编辑模型
- TP模型管理之字段添加
- sfox_newmodel.sql_edit
- layer_hplus.js_edit
- TP模型管理之字段删除
- TP模型管理之字段编辑
- TP模型管理之预览模型
- TP模型管理之公共函数
- layer_hplus.js_修订一
- TP模型管理之预览模型静态页
- 后台内容管理系统
- 分类树显示
- 内容列表显示
- 信息发布
- 编辑信息
- layer_hplus.js
- myJs第一版
- myJs第二版
- myJs第三版
- myJs第四版
- TP5插件用法
- Datatables
- WebUploader
- bootstrap-fileinput
- UEditor
- 简单调用
- 路径问题
- 跨域多图上传
- 跨域单图上传
- UEditor图片跨域上传解决方案
- 定制工具栏图标
- ajaxFileUpload
- LayUI
- 图片上传
- layui分页
- 搜索页
- 搜索优化及删除
- Uploadify
- TP5前端应用
- 静态首页
- 前台首页功能实现
- 自定义标签库
- 前台模板继承应用
- 首页自定义标签改进
- 文章内容页
- 自定义标签改进
- 自定义标签修正
- 图片等比例自动缩放
- 后台权限管理
- 角色管理
- 规则管理
- 权限设置
- 会员管理
- 权限管理
- 前台登录注册功能
- 注册登录
- 阿里大于手机注册
- 阿里大于升级阿里云短信服务
- 自动登录完成
- PHP异位或加密实现自动登陆
- 微信开发
- 分享接口
- 静态页面实现微信分享
- 动态页微信分享
- 页面静态化
- 1-全站静态化前期配置
- 2-链接地址静态化
- TP5常用片段代码
- 加载静态资源路径与常量
- thinkphp5预定义常量
- 删除某文件夹的内容
- 解压插件包
- 异步提交插件
- 其他功能
- 背景音乐
- 手机访问PC网站自动跳转到手机网站代码
- 手机微信音乐MP3播放器
- 后盾之网页背景音乐
- 播放器宽度自适应
- 前台首页数据调用
- 视频列表
- 搜索分页
- H5解决苹果(IOS)不能自动播放音乐
- 清空缓存
- 文件处理常识
- 删除路径下的所有文件夹和文件
- 一键清空缓存
- 评论留言
- 格式化时间
- 替换微博内容的URL地址@用户与表情
- PHP正则理解
- jQuery评论插件
- TP空操作
- TP路由
- 跨域访问
- 设置请其头允许跨域请求
- 模板前台判断手机访问跳转手机网址代码
- PHP遍历一个文件夹下所有文件和子文件夹
- PHP获取视频的第一帧与时长
- TP5数据库
- 链式操作原理
- update替换字段部分内容
- 后台开发
- 后台登录页居中显示
- TP5自带验证码
- JS & JQuery专题
- 二级城市联动菜单
- 模板引擎
- 混合模板编译
- 黄永成TP微博开发
- 消息推送
- memcache安装
- 插件开发
- 插件介绍
- 插件钩子
- 浅谈初步理解钩子
- 插件钩子(hooks)分析
- 插件钩子简单理解
- 控制器调用插件
- 钩子通用处理函数
- 插件基类代码
- 插件测试代码
- 浅谈钩子与插件
- 技术综合
- 常用代码
- PHP
- 56个PHP开发常用代码片段(上)
- 56个PHP 开发常用代码片段(中)
- 56个PHP 开发常用代码片段(下)
- sublime text安装自动补全注释的插件
- 影音视频开发
- 视频
- H5视频直播扫盲
- 音乐
- 语音
- PHP实现语音播报功能
- MUI
- 窗体操作