摘要:問題場景制作一個,需要微信打開后背景音樂或者其他音頻文件進行播放,但是經常出現的結果是,安卓基本沒有問題,但是蘋果手機確不行,總是不進行播放,這是為什么呢問題原因蘋果為了用戶著想,禁止了和加載播放。
問題場景:
制作一個H5,需要微信打開后背景音樂或者其他音頻文件進行播放,但是經常出現的結果是,安卓基本沒有問題,但是蘋果手機確不行,總是不進行播放,這是為什么呢?問題原因:
蘋果為了用戶著想,禁止了Autoplay和JS "onload" 加載播放。
User Control of Downloads Over Cellular Networks In Safari on iOS (for all devices, including iPad), where the user may be on a cellular network and be charged per data unit, preload and autoplay are disabled. No data is loaded until the user initiates it. This means the JavaScript play() and load() methods are also inactive until the user initiates playback, unless the play() or load() method is triggered by user action. In other words, a user-initiated Play button works, but an onLoad="play()" event does not.
但是客戶卻是需要上述效果,那該如何解決呢?
解決方法: 方法一:(依賴touch事件進行播放,但是有時候用戶并沒有操作,此時就有點尷尬了……)document.addEventListener("touchstart", function(){ audio.play(); }, false);方法二:(依賴微信的ready事件進行,但是只能解決微信內部,外部瀏覽器safari還是不行:(……)
document.addEventListener("WeixinJSBridgeReady", function () { audio.play(); }, false);
但是如果作品使用的場景基本基于微信的話,那是用方法二可以基本有效的解決這個問題
同時,當一個H5有多個音頻時,可以在ready的callback里面重新load一遍,后面在適當的時機調用play就可以了,不然的話,依然會報出play方法undefined的error。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/86572.html
摘要:最新使用的組織機構代碼在年頒布實施,由位數字或大寫拉丁字母本體代碼和位數字或大寫拉丁字母校驗碼組成。本體代碼采用系列即分區段順序編碼方法。 1.截取指定字節數的字符串 /** * 截取指定字節的字符串 * @param str 要截取的字符穿 * @param len 要截取的長度,根據字節計算 * @param suffix 截取前len個后,其余的字符的替換字符,一般用… ...
閱讀 3059·2021-11-25 09:43
閱讀 1035·2021-11-24 10:22
閱讀 1364·2021-09-22 15:26
閱讀 690·2019-08-30 15:44
閱讀 2469·2019-08-29 16:33
閱讀 3705·2019-08-26 18:42
閱讀 918·2019-08-23 18:07
閱讀 1840·2019-08-23 17:55