2008-11-11 34 views
45

Thứ tự ưu tiên nào là các sự kiện được xử lý trong JavaScript?Ưu tiên sự kiện trong JavaScript là gì?

Dưới đây là những sự kiện theo thứ tự ABC ...

  1. onabort - Đang tải của một hình ảnh được gián đoạn
  2. onblur - Một yếu tố mất tập trung
  3. onchange - Người sử dụng thay đổi nội dung của một lĩnh vực
  4. onclick - chuột nhấp chuột một đối tượng
  5. ondblclick - chuột đúp nhấp chuột một đối tượng
  6. onerror - Một lỗi đã xảy ra khi tải một tài liệu hoặc hình ảnh
  7. onfocus - Một yếu tố được tập trung
  8. onkeydown - Một khóa bàn phím là ép
  9. onkeypress - Một khóa bàn phím là ép hoặc tổ chức xuống
  10. onkeyup - một khóa bàn phím là phát hành
  11. onload - một trang hoặc một hình ảnh được xong tải
  12. onmousedown - Một nút chuột được ép
  13. onmousemove - Con chuột được chuyển
  14. onmouseout - Con chuột được di chuyển ra khỏi một yếu tố
  15. onmouseover - Con chuột được chuyển trên một phần tử
  16. onmouseup - Một nút chuột được phát hành
  17. onreset - nút reset được nhấp
  18. onresize - Một cửa sổ hoặc khung là thay đổi kích cỡ
  19. onselect - Văn bản được chọn
  20. onsubmit - Các nút gửi được nhấp
  21. onunload - Người dùng thoát khỏi trang

trật tự gì được họ xử lý ra khỏi hàng đợi sự kiện?

Ưu tiên không phải là ưu tiên đầu tiên (FIFO) hoặc vì vậy tôi tin tưởng.

Trả lời

32

Điều này là không, cho đến nay như tôi đã biết, được xác định rõ ràng trong quá khứ. Các trình duyệt khác nhau được tự do triển khai đặt hàng sự kiện nhưng chúng thấy phù hợp. Trong khi hầu hết là đủ gần cho tất cả các mục đích thực tế, đã có và tiếp tục là một số trường hợp cạnh lẻ mà các trình duyệt khác nhau một chút (và, tất nhiên, nhiều trường hợp hơn một số trình duyệt không gửi một số sự kiện nhất định ở tất cả).

Điều đó nói rằng, các HTML 5 draft recommendation hiện làm cho một nỗ lực để chỉ định cách sự kiện sẽ được xếp hàng đợi và cử - the event loop:

Phối hợp các sự kiện, người dùng tương tác, kịch bản, dựng hình, mạng, và vân vân, tác nhân người dùng phải sử dụng vòng lặp sự kiện như được mô tả trong phần này.

Phải có ít nhất một vòng lặp sự kiện cho mỗi tác nhân người dùng và tối đa một sự kiện vòng lặp trên mỗi đơn vị có liên quan ngữ cảnh duyệt nguồn gốc tương tự.

Vòng lặp sự kiện có một hoặc nhiều tác vụ hàng đợi. Hàng đợi nhiệm vụ là một danh sách nhiệm vụ có trật tự [...] Khi tác nhân người dùng xếp hàng tác vụ, , nó phải thêm nhiệm vụ đã cho vào một trong số hàng đợi công việc của vòng lặp có liên quan. Tất cả các nhiệm vụ từ nguồn nhiệm vụ cụ thể phải luôn là được thêm vào cùng một hàng đợi nhiệm vụ, nhưng nhiệm vụ từ các nguồn nhiệm vụ khác nhau có thể được đặt trong hàng đợi công việc khác nhau. [...]

[...] một user agent có thể có một nhiệm vụ hàng đợi cho chuột và sự kiện quan trọng (người dùng tương tác nguồn nhiệm vụ), và khác cho mọi thứ khác. User agent sau đó có thể cung cấp cho bàn phím và chuột kiện ưu tiên hơn các nhiệm vụ khác ba phần tư thời gian, giữ giao diện đáp ứng nhưng không đói hàng đợi công việc khác, và không bao giờ sự kiện chế biến từ bất cứ nguồn nào một nhiệm vụ ra khỏi trật tự . [...]

Lưu ý rằng bit cuối cùng: tùy thuộc vào việc triển khai trình duyệt để xác định sự kiện nào sẽ được nhóm lại và xử lý theo thứ tự, cũng như ưu tiên cho bất kỳ loại sự kiện cụ thể nào. Do đó, có rất ít lý do để mong đợi tất cả các trình duyệt gửi đi tất cả các sự kiện theo thứ tự cố định, hiện tại hoặc trong tương lai.

2

Nếu bạn đang xem các sự kiện chuột/chạm, Patrick H. Lauke đã xuất bản a talk on the subject. Chắc chắn là một thú vị đọc - và giao dịch với tất cả các quirks của các trình duyệt khác nhau, các thiết bị khác nhau và các tiêu chuẩn khác nhau.

Ông cũng gói a comprehensive set of tests.

11

Đối với bất kỳ ai muốn biết các sự kiện liên quan đến chuỗi được gọi, hãy xem bên dưới. Cho đến nay tôi chỉ được thử nghiệm trong Chrome.

  1. mouseover
  2. MouseMove
  3. mouseout

  1. mousedown
  2. thay đổi (trên đầu vào tập trung)
  3. mờ (trên yếu tố tập trung)
  4. tập trung
  5. mouseup
  6. nhấp chuột
  7. dblclick

  1. KeyDown
  2. bấm phím
  3. KeyUp
Các vấn đề liên quan