25

html5 ページに単純な html オーディオ タグを持つ 10 個のオーディオ プレーヤーがあります。jquery、特別なオーディオ js プラグインなどはありません...

現在のプレーヤーがプレイしているときに他のすべてのプレーヤーを一時停止する簡単なスクリプトを js に持っている人はいますか?

シンプルなオーディオ HTML コードを維持したいので、js プラグインを使用したくありません。

4

7 に答える 7

96

イベント委任を使用できます。キャプチャ フェーズで再生イベントをリッスンし、すべてのビデオ ファイルを一時停止しますが、ターゲット ファイルは一時停止しません。

document.addEventListener('play', function(e){
    var audios = document.getElementsByTagName('audio');
    for(var i = 0, len = audios.length; i < len;i++){
        if(audios[i] != e.target){
            audios[i].pause();
        }
    }
}, true);
于 2013-11-05T15:09:52.813 に答える
5

うまくいかなかった以前の両方の回答を混ぜ合わせて、私はそれを使用しました。追加&& window.$_currentlyPlaying != evt.targetしたばかりで、すべてが機能しています。また、オーディオタグのこれとその他のグッズで要点を作成しました。javascript-audio-tags

window.addEventListener("play", function(evt)
{
    if(window.$_currentlyPlaying && window.$_currentlyPlaying != evt.target)
    {
        window.$_currentlyPlaying.pause();
    } 
    window.$_currentlyPlaying = evt.target;
}, true);
于 2016-06-11T14:21:29.180 に答える
0

ループしたくない場合は、このソリューションを試すこともできます

var previuosAudio;
document.addEventListener('play', function(e){
    if(previousAudio && previousAudio != e.target){
        previousAudio.pause();
    }
    previousAudio = e.target;
}, true);
于 2016-06-09T06:48:37.037 に答える