HTML5: Sự kiện Media

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực

Các sự kiện khác nhau sẽ được gửi khi tiến hành xử lý các media trong các trang HTML có sử dụng đến các phần tử <audio><video>.

Các sự kiện Media

Bảng dưới đây sẽ liệt kê các sự kiện media cũng như cung cấp một số thông tin hữu ích về cách sử dụng chúng.

Tên sự kiện

Mô tả

abort

Sự kiện này được gửi khi huỷ bỏ việc phát lại; ví dụ, nếu thiết bị media đang được thực hiện mà ta bắt đầu thực hiện lại từ đầu thì sự kiện này sẽ được gửi.

canplay

Được gửi khi đủ dữ liệu để thiết bị media có thể chơi được, ít nhất là một vài khung hình (frame). Điều này tương ứng với giá trị CAN_PLAY của thuộc tính readyState.

canplaythrough

Được gửi khi trạng thái sẵn sàng thay đổi thành CAN_PLAY_THROUGH, có nghĩa rằng toàn bộ thiết bị media có thể chơi mà không bị gián đoạn với giả định tốc độ download vẫn còn ít nhất ở mức hiện tại. Lưu ý: Việc thiết lập giá trị cho thuộc tính currentTime sẽ kích hoạt sự kiện canplaythrough trong FireFox, các trình duyệt khác có thể sẽ không kích hoạt sự kiện này.

durationchange

Được gửi khi các siêu dữ liệu (metadata) được nạp hoặc thay đổi dẫn đến sự thay đổi trong quá trình thực hiện media, ví dụ như khi media được nạp hoàn chỉnh thì sự kiện này sẽ được gửi đi.

emptied

Được gửi khi thiết bị media ở trạng thái trống (media được nạp hoàn chỉnh hoặc một phần), lúc này phương thức load() sẽ được gọi để nạp lại media.

encrypted

Được gửi khi người dùng thực hiện khởi tạo dữ liệu của media.

ended

Được gửi thi hoàn tất việc phát lại (playback).

error

Được gửi khi xảy ra lỗi. Khi đó thuộc tính error của phần tử sẽ chứa thông tin cụ thể về lỗi. Xem chi tiết tại phần Xử lý lỗi.

interruptbegin

Được gửi khi đang phát audio trên thiết bị Firefox OS thì bị gián đoạn, hoặc cũng có thể do ứng dụng phát audio được gửi tới sau, hoặc do audio có độ ưu tiên cao hơn kênh audio bắt đầu chơi. Xem chi tiết tại phần Sử dụng AudioChannels API.

interruptend

Được gửi khi đoạn audio bị gián đoạn trước đó trên thiết bị Firefox OS  bắt đầu chơi một lần nữa - khi kết thúc sự gián đoạn. Điều này xảy ra khi ứng dụng liên quan được đặt lên trước, hoặc khi đoạn audio có độ ưu tiên cao hơn đã phát xong.

loadeddata

Xảy ra khi frame đầu tiên của thiết bị media được nạp xong.

loadedmetadata

Xảy ra khi metadata của media được nạp xong, lúc này tất cả các thuộc tính đều chứa những thông tin hữu ích mong muốn.

loadstart

Được gửi khi bắt đầu nạp media.

mozaudioavailable

Được gửi khi một bộ đệm âm thanh cung cấp cho lớp âm thanh để xử lý, lúc này bộ đêm sẽ chứa các mẫu âm thanh ở dạng thô mà có thể hoặc không được chơi theo thời gian bạn nhận được sự kiện.

pause

Được gửi khi tạm dừng việc phát lại.

play

Được gửi khi bắt đầu phát lại media sau khi bị tạm ngưng, có nghĩa là khi việc phát lại được mở lại sau sự kiện pause trước đó.

playing

Được gửi khi media bắt đầu chơi (hoặc là lần đầu tiên, hoặc là sau khi tạm dừng, hoặc sau khi kết thúc và bắt đầu chơi lại).

progress

Được gửi định kỳ để thông báo tới các bên liên quan về tiến trình tải media. Thông tin về lượng media hiện thời mà đã được tải về có sẵn trong thuộc tính buffered của phần tử.

ratechange

Được gửi khi thay đổi tốc độ phát lại.

seeked

Được gửi khi hoàn thành hoạt động tìm kiếm.

seeking

Được gửi khi bắt đầu hoạt động tìm kiếm.

stalled

Được gửi khi người dùng cố gắng lấy dữ liệu media, nhưng dữ liệu lại bất ngờ không tới nơi.

suspend

Được gửi khi việc nạp media bị treo; điều này xảy ra hoặc là do việc download đã hoàn tất hoặc bị tạm ngưng do một lý do nào đó.

timeupdate

Xảy ra khi thời gian được chỉ ra bởi thuộc tính currentTime của phần tử đã thay đổi.

volumechange

Được gửi khi thay đổi âm lượng của audio (khi âm lượng được thiết lập hoặc khi thay đổi thuộc tính muted).

waiting

Được gửi khi các hoạt động được yêu cầu (phát lại chẳng hạn) bị trì hoãn trong khi chờ hoàn thành những hoạt động khác (như tìm kiếm chẳng hạn).

Ví dụ:

var v = document.getElementsByTagName("video")[0];

v.addEventListener("seeked", function() { document.getElementsByTagName("video")[0].play(); }, true);

v.currentTime = 10.0;

Ví dụ trên tiến hành nạp phần tử video đầu tiên trong trang web và nạp vào nó sự kiện seeked, sự kiện này sẽ được gửi mỗi khi hoàn thành hoạt động tìm kiếm. Listener sau đó sẽ gọi phương thức play() để bắt đầu phát lại.

Việc đặt thuộc tính currentTime của phần tử <video> là 10.0 có nghĩa là hoạt động tìm kiếm sẽ được thực hiện trong 10 giây và hoạt động này sẽ được nạp vào thiết bị media. Điều này sẽ phát sinh ra sự kiện seeking và sẽ được gửi khi hoạt động tìm kiếm bắt đầu, sau đó sự kiện seeked sẽ được gửi đi khi hoàn tất hoạt động tìm kiếm.

Tóm lại, ví dụ trên tiến hành đánh dấu hoạt động tìm kiếm trong khoảng thời gian 10 giây vào thiết bị media, sau đó tiến hành phát lại ngay sau khi kết thúc tìm kiếm.

Khả năng tương thích

Đối với Máy tính

Đặc điểm

Chrome

Firefox (Gecko)

Internet Explorer

Opera

Safari

Hỗ trợ cơ bản

?

3.5 (1.9.1) (Trước Gecko 2.0, các sự kiện media đã được khởi động.)

?

?

?

encrypted

42.0

?

?

?

?

load

?

Bị huỷ ở bản 3.6 (1.9.2)

?

?

?

mozaudioavailable 

Không hỗ trợ

4.0 (2.0)

Không hỗ trợ

Không hỗ trợ

Không hỗ trợ

suspend

?

3.6 (1.9.2)

?

?

?

Đối với thiết bị cầm tay

Đặc điểm

Android

Firefox Mobile (Gecko)

IE Mobile

Opera Mobile

Safari Mobile

Chrome for Android

Hỗ trợ cơ bản

?

?

?

?

?

?

encrypted

?

?

?

?

?

42.0

load

?

?

?

?

?

?

mozaudioavailable 

Không hỗ trợ

4.0 (2.0)

Không hỗ trợ

Không hỗ trợ

Không hỗ trợ

?

suspend

?

?

?

?

?

?

» Tiếp: Web Worker
« Trước: Server-Sent
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!