HTML5: Sự kiện Media
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> và <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 |
? |
? |
? |
? |
? |
? |