Если вас беспокоит, что событие 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);
Надеюсь, это поможет!