溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

解決ios微信下vue項目組件切換并自動播放音頻問題

發(fā)布時間:2020-09-23 03:08:53 來源:腳本之家 閱讀:295 作者:TimeFly 欄目:移動開發(fā)

最近在做一個英語答題項目 , 項目需求是通過答題取的成績 , 答題的題型是分為 , 聽音選圖 , 看圖選詞 , 和填空題 . 項目總共分為了3個頁面 , 開始頁 ,答題頁 和結束頁面 ,答題頁關于每種題型 , 我做了相應的組件 , 每次切換題目的時候 ,顯示對應的的組件 , 要求聽音選圖的時候會自動播放音頻 .

慣例 , ios下的safari和微信內(nèi)置瀏覽器都不支持audio的自動播放 , 通常的解決方案都是通過 document.addEventListener('WeixinJSBridgeReady',function(){audio.play()},false) 來實現(xiàn)的自動播放 , 但是 WeixinJSBridgeReady 事件從頁面加載開始到結束只會加載一次 ,  而且不能通過 removeEventListener 來移除 , 所以會有兩個問題:

1.從首頁面到答題頁面是路由切換的 , 但是處于開始頁面時候 , WeixinJSBridgeReady這個事件已經(jīng)加載完了 , 跳轉(zhuǎn)到答疑頁面的時候已經(jīng)無法監(jiān)聽到該事件了;

2.首頁就是答題頁面的時候,在題型組件切換的時候只會在第一次加載聽力題型的時候會自動播放 , 再次切換到這種題目的時候無法再次自動播放 .

經(jīng)過不斷的測試 , 發(fā)現(xiàn)ios下不支持的原因是 不支持動態(tài)創(chuàng)建的audio標簽自動播放 , 包括頁面第一次加載 , 所以轉(zhuǎn)化了思路 ,把audio標簽放在頂層的App.vue里面 , 不隨著組件的切換創(chuàng)建和銷毀 , 然后在App.vue里面寫一個的方法 , 接受src和callback的參數(shù) , 在main.js掛在全局上, 每次切換的時候 ,調(diào)用該方法傳入對應的src , 代碼如下:App.vue

解決ios微信下vue項目組件切換并自動播放音頻問題

解決ios微信下vue項目組件切換并自動播放音頻問題

(關于為什么用document.getElementById , 其實本來是準備用$refs的 , 但是不知為何在app.vue中無法獲取 , 控制臺打印的$ref能看到有audio 了, 但是不可讀)

main.js

解決ios微信下vue項目組件切換并自動播放音頻問題 

組件內(nèi):

解決ios微信下vue項目組件切換并自動播放音頻問題 

這里要注意的兩點: 1.app.vue中的audio標簽必須設置 controls , 然后通過css隱藏該audio ,否則無法播放 ;

2.在頁面加載的時候需要通過 監(jiān)聽  document.addEventListener('WeixinJSBridgeReady',function(){audio.load()},false)   讓audio.load()加載一次 ,否則后續(xù)也無法自動播放 ;

總結

以上所述是小編給大家介紹的解決ios微信下vue項目組件切換并自動播放音頻問題,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網(wǎng)站的支持!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI