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


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

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

Ця подія є корисною, коли вам потрібно виконати якісь дії в момент, коли медіафайл досягає стану, що дозволяє його відтворення. Наприклад, ви можете активувати кнопку "Play" для користувача тільки після того, як подія "canplay" спрацює, що гарантує, що медіафайл готовий до відтворення.

Для використання події "canplay", спочатку необхідно отримати доступ до медіаелемента (наприклад, audio або video) у вашому HTML документі, а потім додати слухача події за допомогою методу addEventListener.

const videoElement = document.querySelector('video');

videoElement.addEventListener('canplay', function(event) {
  console.log('Відео готове до відтворення!');
});

У цьому прикладі ми отримуємо доступ до елемента video за допомогою querySelector і додаємо слухача події "canplay". Коли браузер визначає, що відео готове до відтворення, спрацьовує функція зворотного виклику, яка просто виводить повідомлення в консоль.

Важливо розуміти різницю між подіями "canplay" та "canplaythrough". Подія "canplay" спрацьовує, коли браузер може почати відтворення, але це не означає, що весь медіафайл можна відтворити без зупинки для буферизації. Подія "canplaythrough" спрацьовує, коли браузер вважає, що медіафайл можна відтворити повністю до кінця без будь-якої додаткової буферизації. Якщо ваше завдання — просто почати відтворення медіафайлу якомога швидше, "canplay" буде правильним вибором.

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

автор: Bond

Порада

Для уникнення помилок на сторінках із багатьма медіафайлами корисно розуміти, що подія "canplay" може спрацьовувати кілька разів, особливо якщо користувач змінює якість відео або переключається між різними джерелами. В такому випадку може знадобитися видалити слухача події після першого спрацьовування або динамічно оновлювати інтерфейс.

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

Подія "canplay" може бути використана для покращення SEO вашого сайту. Якщо ви автоматично запускаєте відео після його готовності до відтворення, це може покращити час перебування користувачів на вашій сторінці, що позитивно вплине на ранжування в пошукових системах.

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

Іноді корисно використовувати подію "canplay" для моніторингу доступності медіафайлів у реальному часі. Наприклад, ви можете відстежувати подію, щоб записувати в журнал часу, скільки займає завантаження медіафайлу до стану, коли він готовий до відтворення.

автор: Bond

Синтаксис

element.addEventListener('canplay', function(event) {
  // Код обробника події
});

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
3 3.5 3.1 10.5 12 9
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
4.4 18 4 3

Приклади

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

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

HTML

<video width="320" height="180" controls>
    <source src="film.mp4" type="video/mp4">
</video>

JS

const video = document.querySelector('video');

video.addEventListener('canplay', function() {
  alert('Відео готове до відтворення!');
});
автор: Bond

Цей приклад показує, як динамічно змінювати стан кнопки "Play". Спочатку кнопка вимкнена, щоб запобігти спробам відтворення незавантаженого медіафайлу. Після того, як подія "canplay" спрацьовує, кнопка стає активною, що дозволяє користувачам відтворювати аудіофайл.

HTML

<button id="playButton">Відтворити</button>
<audio controls>
    <source src="melody.mp3" type="audio/mpeg">
</audio>

JS

const audio = document.querySelector('audio');
const playButton = document.querySelector('#playButton');

playButton.disabled = true; // Вимикаємо кнопку "Play"

audio.addEventListener('canplay', function() {
  playButton.disabled = false; // Вмикаємо кнопку "Play" після готовності медіа
});

playButton.addEventListener('click', function() {
  audio.play();
});
автор: Bond

Цей приклад демонструє, як використовувати подію canplay для контролю за станом відео та забезпечення кращого користувацького досвіду. Коли сторінка завантажується, індикатор завантаження показується, і кнопки "Play" та "Pause" вимкнені. Після того, як подія canplay спрацьовує, індикатор зникає, і кнопки стають активними, дозволяючи користувачам взаємодіяти з відео. Також ми обробляємо подію waiting, щоб знову показувати індикатор завантаження, коли відео потребує буферизації.

автор: Bond

Коментарі

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

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

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

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

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

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

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

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

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

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

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

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

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

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

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