JS властивість Event.durationchange


Загальний опис

durationchange — це подія, яка спрацьовує, коли змінюється тривалість медіафайлу (наприклад, аудіо або відео). Ця подія важлива, коли тривалість мультимедійного контенту стає відомою або змінюється внаслідок завантаження нового медіафайлу або зміни його джерела. Подія durationchange використовується для динамічного оновлення елементів інтерфейсу, таких як таймкоди або прогрес-бари, що залежать від тривалості медіафайлу.

Коли браузер спочатку не знає тривалість медіафайлу, він встановлює її значення в NaN (Not a Number). Коли тривалість стає відомою (наприклад, після завантаження метаданих), подія durationchange спрацьовує, і тривалість оновлюється до нового значення. Подія також спрацьовує, якщо медіафайл замінюється іншим файлом, тривалість якого відрізняється. Наприклад:

const videoElement = document.getElementById('myVideo');

videoElement.addEventListener('durationchange', function(event) {
  console.log(`Нова тривалість відео: ${videoElement.duration} секунд.`);
  document.getElementById('durationDisplay').textContent = `Тривалість: ${videoElement.duration.toFixed(2)} секунд`;
});

У цьому прикладі, коли змінюється тривалість відеофайлу, консоль виводить нове значення тривалості, і це значення також відображається у елементі з ідентифікатором durationDisplay.

Подія durationchange часто використовується разом з іншими подіями медіафайлів, такими як loadedmetadata (коли метадані медіафайлу, такі як розміри і тривалість, повністю завантажені) і timeupdate (коли поточний час відтворення медіафайлу змінюється), щоб забезпечити повний контроль над відтворенням медіа на веб-сторінках. Ця подія дозволяє розробникам створювати більш інтерактивні та динамічні інтерфейси користувача, що реагують на зміни у відтворюваних медіафайлах.

автор: Bond

Порада

Використовуйте durationchange для оновлення інтерфейсу користувача, як-от прогрес-бари або таймкоди. Це забезпечить актуальну інформацію про тривалість медіафайлу.

автор: Bond
Порада

Перевіряйте значення NaN тривалості, особливо коли працюєте з потоковими медіа або медіа, тривалість яких може змінюватися в процесі. Це дозволить обробити випадки, коли тривалість медіафайлу недоступна.

автор: Bond
Порада

Використовуйте durationchange разом з іншими подіями, такими як loadedmetadata та timeupdate, для створення комплексних механізмів управління медіа на сторінці. Це дозволить вам створювати гнучкіші та адаптивніші медіаінтерфейси.

автор: Bond

Синтаксис

element.addEventListener('durationchange', function(event) {
  // Ваш код тут
});

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE
66 57 11.1 53 16
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
66 66 57 11.3
Підтримка: серверні переглядачі
Переглядач Node.js Deno
15.0.0 1.0

Приклади

+ запропонувати свій приклад у пісочниці

У цьому прикладі подія durationchange використовується для встановлення максимальної тривалості прогрес-бара після зміни тривалості аудіофайлу. Це забезпечує точну синхронізацію прогрес-бара з відтворенням аудіо.

HTML

<audio id="myAudio" controls>
    <source src="melody.mp3" type="audio/mpeg">
</audio>
<progress id="progressBar" max="100" value="30"></progress>

JS

const audioElement = document.getElementById('myAudio');
const progressBar = document.getElementById('progressBar');

audioElement.addEventListener('durationchange', function(event) {
  progressBar.max = audioElement.duration;
  console.log(`Тривалість аудіо змінено на: ${audioElement.duration} секунд.`);
});

audioElement.addEventListener('timeupdate', function(event) {
  progressBar.value = audioElement.currentTime;
});
автор: Bond

Цей приклад показує, як обробляти подію durationchange після зміни джерела відеофайлу. Коли користувач обирає нове джерело, тривалість відео оновлюється, і відповідна інформація відображається на сторінці. Це корисно для динамічного управління медіа-контентом на веб-сторінках, де користувач може вибирати різні файли для відтворення.

HTML

<video id="myVideo" width="320" height="180" controls>
    <source src="film.mp4" type="video/mp4">
</video>
<div id="sourceSelector">Демонстраційний елемент</div>
<div id="durationDisplay">Демонстраційний елемент</div>

JS

const videoElement = document.getElementById('myVideo');
const sourceElement = document.getElementById('sourceSelector');

sourceElement.addEventListener('change', function(event) {
  videoElement.src = event.target.value;
  videoElement.load();
});

videoElement.addEventListener('durationchange', function(event) {
  console.log(`Новий файл, тривалість відео: ${videoElement.duration} секунд.`);
  document.getElementById('durationDisplay').textContent = `Тривалість: ${videoElement.duration.toFixed(2)} секунд`;
});
автор: Bond

У цьому прикладі користувач може обирати різні відеофайли зі списку, і при зміні тривалості медіа відображатиметься актуальна тривалість. Подія durationchange забезпечує оновлення інформації при завантаженні нового відео, дозволяючи динамічно відображати тривалість навіть при підключенні різних медіафайлів.

автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід