2016-06-25 2 views
0

Каков способ отключения или предотвращения событий с помощью кнопки воспроизведения/паузы в аудиоэлементе html5?Как отключить кнопку воспроизведения/паузы аудиоэлемента html5

Я пытаюсь что-то вроде этого:

document.getElementById(id).addEventListener("pause", function() { 
    $(this).trigger("play"); 
}); 

Это работает, когда в одиночку, но моя проблема заключается в том, что я хотел бы контролировать воспроизведение/паузу при нажатии на DIV, где звуковой элемент находится в:

<div id="my_div"> 
    <audio controls id="my_audio"> 
     <source src="my_song.mp3" type="audio/mpeg"> 
    </audio> 
</div> 
var is_playing; 
$("#my_div").click(function() { 
    if (is_playing) { 
     $('#my_audio').trigger("pause"); 
     is_playing = false; 
    } else { 
     $('#my_audio').trigger("play"); 
     is_playing = true; 
    } 
}); 

так что это приводит к конфликту, когда я использую кнопки паузы/воспроизведения на аудио элемента. Таким образом, я ищу способ предотвратить случай воспроизведения элемента управления воспроизведением/паузой (но не все элементы управления, поскольку мне нужно использовать поиск и объем).

+1

_ «моя проблема заключается в том, что я контролирую звук с чем-то другим» _ Что такое «нечто другое»? Можете ли вы создать stacksnippets для демонстрации? – guest271314

+0

С помощью этого кода воспроизведение и пауза вызывают непрерывно ... Я сомневаюсь, что это то, что вы ищете .. – Rayon

+0

@ guest271314 Я добавил информацию о том, что я хотел бы сделать именно так. – jck

ответ

1

play и pause не являются методами jQuery. Попробуйте позвонить .play(), .pause() на <audio> элемент

$(function() { 
    var is_playing; 
    $("#my_div").click(function(e) { 
    // if `e.target` is not `<audio>` element 
    if(e.target.tagName !== "AUDIO") { 
     if (is_playing) { 
     $('#my_audio')[0].pause(); 
     is_playing = false; 
     } else { 
     $('#my_audio')[0].play(); 
     is_playing = true; 
     } 
    } else { 
     e.stopPropagtion() 
    } 
    }); 
}); 

plnkr http://plnkr.co/edit/l5NejZ4rvxTZLPghkFWF?p=preview

+0

TY @ guest271314, но это работает так же, как мой код, где я использую метод triger(), поэтому он не помогает. Проблема в том, что когда я нажимаю кнопку воспроизведения/паузы элементов управления аудиоэлементами, он запускает 2 события: 1 на div и 1 на кнопке воспроизведения, поэтому это не работает должным образом. – jck

+0

@jck Можете ли вы создать stacksnippets, plnkr http://plnkr.co, чтобы продемонстрировать? – guest271314

+0

@jck _ "Проблема в том, что когда я нажимаю кнопку воспроизведения/паузы элементов управления аудиоэлементами, он запускает 2 события: 1 на div и 1 на кнопке воспроизведения. _ Еще одно событие клика, прикрепленное к' # my_div', который не появляется в вопросе? См. Plnkr http://plnkr.co/edit/l5NejZ4rvxTZLPghkFWF?p=preview – guest271314

Смежные вопросы