モバイル側でaudioが同時に再生できる複数の問題を解決
4386 ワード
まず説明しますが、内容はueditorリッチテキストで、もともと1つのオーディオしかありませんでしたが、製品のニーズに応じて、1つのオーディオの制限を外しました.その結果、移動端で発見され、複数のオーディオが同時に再生できることに気づきました.これは気まずいです.整理の考え方で発見されました.この効果を実現するには、レンダリングテキストが完成した後、すべてのaudioラベルを取得する必要があります.ラベルの上に再生イベントを追加し、a、b、cの3つのaudioラベルの中で、aはすでに再生されており、bをクリックして再生する前にaラベルの再生を閉じる必要がある場合は、1つの再生のみの修正を実現することができます.コードは以下の通りである.テキストレンダリング後にすべてのaudioラベルが取得され、pauseAll()イベントがバインドされます.
2.pauseAll()イベントの具体的な実装、e.targetが現在クリックしているaudioタグを取得できることに注意してくださいjsのthisタグです
vm.audioList = document.getElementsByTagName("audio");//
if(vm.audioList.length>0){//
// console.log(vm.audioList,"...",vm.articleInfo);
// audio
// play
[].forEach.call(vm.audioList, function (i) {
i.addEventListener("play", vm.pauseAll.bind(i));
});
}
2.pauseAll()イベントの具体的な実装、e.targetが現在クリックしているaudioタグを取得できることに注意してくださいjsのthisタグです
pauseAll: function(e){// , ,
//
// console.log(e.target,"...",this);
var self = e.target;// audio
[].forEach.call(this.audioList, function (i) {
// audios audio
i !== self && i.pause();
})
}