[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
- 窗體操作