<header>
<h2 class="title">HTML Events: canplaythrough</h2>
<p class="description">Подія сигналізує, що медіафайл можна відтворити до кінця без паузи для буферизації.</p>
</header>
<main>
<div class="result">
<!-- Відео елемент -->
<video id="myVideo" width="400" controls>
<source src="https://www.w3schools.com/html/mov_bbb.mp4" type="video/mp4">
Ваш браузер не підтримує відтворення відео.
</video>
<!-- Індикатор завантаження -->
<div id="loadingIndicator">Завантаження відео...</div>
<!-- Кнопка управління -->
<button id="playButton" disabled>Play</button>
</div>
</main>
body {
font-size: 16px;
line-height: 1.5;
font-family: monospace;
}
header {
background-color: #f1f1f1;
margin-bottom: 25px;
padding: 15px;
box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
}
header h2.title {
padding-bottom: 15px;
border-bottom: 1px solid #999;
}
header p.description {
font-style: italic;
color: #222;
}
.result {
background-color: #f8f8f8;
padding: 15px;
box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
}
#loadingIndicator {
color: red;
margin-top: 10px;
display: none; /* Приховуємо за замовчуванням */
}
#playButton {
margin-top: 15px;
}
// Отримуємо елементи з DOM
const video = document.getElementById('myVideo');
const playButton = document.getElementById('playButton');
const loadingIndicator = document.getElementById('loadingIndicator');
// Відображаємо індикатор завантаження під час початкового завантаження відео
loadingIndicator.style.display = 'block';
// Додаємо обробник події 'canplaythrough'
video.addEventListener('canplaythrough', function() {
// Приховуємо індикатор завантаження, коли відео готове до безперервного відтворення
loadingIndicator.style.display = 'none';
// Активуємо кнопку відтворення
playButton.disabled = false;
});
// Обробник події для кнопки Play
playButton.addEventListener('click', function() {
video.play();
});
// Обробник події 'waiting', щоб показувати індикатор завантаження під час буферизації
video.addEventListener('waiting', function() {
loadingIndicator.style.display = 'block';
});
// Обробник події 'playing', щоб приховати індикатор, коли відео відтворюється
video.addEventListener('playing', function() {
loadingIndicator.style.display = 'none';
});
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.