兼容微信的移動端自動播放音樂方案

大多數(shù)瀏覽器都禁用了自動播放音樂的功能,因為這可能會帶來不好的用戶體驗以及更多的電池消耗楣号。因此下面的代碼是無法正常工作的:

<audio autoplay="autoplay">
  <source src="./music.mp3" type="audio/mpeg" />
  Your browser does not support the audio element.
</audio>

此外,企圖使用 audio 元素的 play 方法自動播放音樂会钝,也是被禁止的:

const src = "./music.mp3";
const audio = new Audio();
audio.src = src;
audio.preload = "auto"
audio.play();

在 Chrome 中溜嗜,上面的代碼會拋出一個異常:

Uncaught (in promise) DOMException

對于音樂自動播放的解決方案,主要有兩大類:

  1. 使用 iframe
  2. 借助事件

第一種方案通過借助 iframe 來進行音樂的自動播放巢墅,但我沒有測試效果如何诸狭,可以參考這里
借助事件的方案很簡單君纫,就是監(jiān)聽觸摸事件,當?shù)谝淮斡|摸發(fā)生后就播放音樂妹懒,這樣就可以繞過瀏覽器的檢測眨唬。但缺點是如果用戶打開網(wǎng)站后一直不觸摸屏幕,是不會自動播放音樂的好乐。不過這樣的例外很少匾竿,絕大多數(shù)用戶打開頁面后都會發(fā)生觸摸動作的,是個很好的解決方案蔚万。如果要追求百分之百自動播放岭妖,不妨試試上面的 iframe 方案。

function autoPlay(src) {
  const audio = new Audio();
  // 該元素用來在頁面上控制音樂的播放和暫停
  const musicEle = document.querySelector("#music")
  audio.src = src;
  audio.preload = "auto"
  let played = false;

  // 第一次觸摸結(jié)束后開始播放音樂
  document.addEventListener("touchend", () => {
    if (played) return;
    if (audio.paused) {
      played = true;
      audio.play();
    }
  })

  // 控制音樂的播放和暫停
  musicEle.addEventListener("click", function () {
    if (audio.paused) {
      this.className = "on";
      audio.play();
    } else {
      this.className = "off"
      audio.pause();
    }
  })
}
autoPlay("./music.mp3");

但這個方案在微信中不太好用,在我的手機上測試的時候昵慌,使用微信打開頁面并觸摸不會自動播放音樂(IOS 12.1.2假夺,微信版本 6.7.4)斋攀,因此存在一些兼容性問題。
對于微信淳蔼,可以通過 WeixinJSBridge 對象來實現(xiàn)這個功能侧蘸,微信自帶的瀏覽器提供了一個 WeixinJSBridge 內(nèi)建對象,借助這個對象實現(xiàn)音樂自動播放:

function autoPlay(src) {
  const audio = new Audio();
  // 該元素用來在頁面上控制音樂的播放和暫停
  const musicEle = document.querySelector("#music")
  audio.src = src;
  audio.preload = "auto"
  let played = false;

  // 第一次觸摸結(jié)束后開始播放音樂
  document.addEventListener("touchend", () => {
    if (played) return;
    if (audio.paused) {
      played = true;
      audio.play();
    }
  })

  // 兼容微信
  if (window.WeixinJSBridge) {
    WeixinJSBridge.invoke("getNetworkType", {}, function (e) {
      played = true;
      audio.play();
    }, false);
  } else {
    document.addEventListener("WeixinJSBridgeReady", function () {
      WeixinJSBridge.invoke("getNetworkType", {}, function (e) {
        played = true;
        audio.play();
      });
    }, false);
  }

  // 控制音樂的播放和暫停
  musicEle.addEventListener("click", function () {
    if (audio.paused) {
      this.className = "on";
      audio.play();
    } else {
      this.className = "off"
      audio.pause();
    }
  })
}
autoPlay("./music.mp3");

以上就是在移動端自動播放音樂鹉梨,同時兼容微信瀏覽器的方案。

完。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末旦袋,一起剝皮案震驚了整個濱河市泡仗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌猜憎,老刑警劉巖娩怎,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異胰柑,居然都是意外死亡截亦,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門柬讨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來崩瓤,“玉大人,你說我怎么就攤上這事踩官∪赐埃” “怎么了?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵蔗牡,是天一觀的道長颖系。 經(jīng)常有香客問我,道長辩越,這世上最難降的妖魔是什么嘁扼? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮黔攒,結(jié)果婚禮上趁啸,老公的妹妹穿的比我還像新娘强缘。我一直安慰自己,他們只是感情好不傅,可當我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布旅掂。 她就那樣靜靜地躺著,像睡著了一般访娶。 火紅的嫁衣襯著肌膚如雪商虐。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天震肮,我揣著相機與錄音,去河邊找鬼留拾。 笑死戳晌,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的痴柔。 我是一名探鬼主播沦偎,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼咳蔚!你這毒婦竟也來了豪嚎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤谈火,失蹤者是張志新(化名)和其女友劉穎侈询,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體糯耍,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡扔字,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了温技。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片革为。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖舵鳞,靈堂內(nèi)的尸體忽然破棺而出震檩,到底是詐尸還是另有隱情,我是刑警寧澤蜓堕,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布抛虏,位于F島的核電站,受9級特大地震影響套才,放射性物質(zhì)發(fā)生泄漏嘉蕾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一霜旧、第九天 我趴在偏房一處隱蔽的房頂上張望错忱。 院中可真熱鬧儡率,春花似錦、人聲如沸以清。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽掷倔。三九已至眉孩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間勒葱,已是汗流浹背浪汪。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留凛虽,地道東北人死遭。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像凯旋,于是被迫代替她去往敵國和親呀潭。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 姓名:鄧平云 深圳蔚藍時代商業(yè)管理有限公司南京分公司 【日精進打卡第169天】 【知~學習】 《六項精進大綱 》1...
    鄧平云閱讀 123評論 0 0
  • 9月至非,是開學季 9月钠署,是豐收節(jié) 9月10日,是一年一度的教師節(jié) 【教師節(jié)文案】 尺長教鞭荒椭,督促學生谐鼎,順利成長; 滿...
    Nanana_liu閱讀 743評論 0 0
  • 一、導(dǎo)語: 大家好趣惠,我是王金金该面,簡書昵稱斷斷Echo,愛讀書愛電影愛音樂信卡,很開心在這里和大家相遇隔缀。大家如果能夠聽到...
    愛讀書的斷斷閱讀 1,525評論 3 11
  • 01 人生的軌跡猾瘸,有時候同出一轍的相似,但有的人走著走著就與成功擦肩而過丢习,但有的人走著走著就成為人生的贏家牵触。 小時...
    紅棗饅頭閱讀 695評論 2 6