HTML5 Audio: использование событий oncanplay и oncanplaythrough для аудио

1

Мне сказали использовать события oncanplay и oncanplaythrough потому что oncanplay может быть ненадежным в некоторых браузерах:

В моем коде я использую oncanplay событие oncanplay. Как я могу настроить свой код так, чтобы я мог использовать оба события, как мне сказали?

// player is an HTML5 Audio Element

player.oncanplay = function () {
        if (value.value !== "") {
            canPlay = true;
            playPauseIcon(true);
        }
    };  

Мой полный список кодов здесь: https://jsfiddle.net/vhgL96se/142/

Теги:
audio
events

1 ответ

2
Лучший ответ

Если вас беспокоит, что событие canplay не canplay, вы можете использовать как canplaythrough и canplay вместе. Исходя из вашего кода, должна быть возможность более или менее повторно использовать один и тот же обработчик событий для обоих событий.

Рассмотрим следующие изменения, а именно использование addEventListener() для регистрации обработчиков для обоих событий и объявление общей функции обработчика со слегка измененной логикой:

// Define a common handler function that will be reused for
// both events
function playerMediaPlayable() {

    // Add canPlay !== true to prevent playPauseIcon() being
    // called a second time if 'canplaythrough' fires after 'canplay'
    if (value.value !== "" && canPlay !== true) {

        canPlay = true;
        playPauseIcon(true);
    }
}

// Use playerMediaPlayable handler for both events
player.addEventListener('canplay', playerMediaPlayable);
player.addEventListener('canplaythrough', playerMediaPlayable);  

Надеюсь, это поможет!

  • 0
    Можете ли вы предоставить обновленную версию jsfiddle, реализованную в коде, пожалуйста? И спасибо за информацию. jsfiddle.net/vhgL96se/142
  • 1
    @MaryJaneSmith уверен, что здесь - вы идете jsfiddle.net/ez02nsxg Всего наилучшего в вашем проекте :)
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню