2011-10-05 20 views
8

Tôi đã xem qua các tài liệu tại developer.mozilla.org và tài liệu dev của Apple nhưng tôi không thể tìm thấy tài liệu giải thích cho dù bạn có thể lập trình xác định xem thẻ HTML cụ thể có hỗ trợ eventListener đã cho hay không.Làm cách nào để bạn có thể xác định được các sự kiện mà một đối tượng HTML có thể nghe?

Giống như tôi biết rằng thẻ <script> sẽ không hỗ trợ trình nghe nhấp chuột vì không có gì để nhấp vào, nhưng làm cách nào để tôi biết điều đó?

Hoặc chặn điều đó, có một tham chiếu dễ dàng nào đó về sự kiện mà mỗi thẻ hỗ trợ không?

Trả lời

5

Bên ngoài một vài trường hợp cạnh, có bạn có thể, theo Perfection Kills:

Bí quyết là nhiều trình duyệt hiện đại báo cáo tài sản tương ứng với một tên sự kiện như là tồn tại trong một phần tử.

Về cơ bản, mã trông như thế này:

'onclick' in document.documentElement; // true 
'onclick2' in document.documentElement; // false 

Ông sử dụng nó để phát hiện hỗ trợ sự kiện trong các trình duyệt khác nhau, nhưng nó cũng có thể được sử dụng để phát hiện xem hoặc không phải là một yếu tố hỗ trợ sự kiện:

Sự kiện phải được kiểm tra trên một yếu tố có thể thực sự bắt nguồn sự kiện đó.

Vì vậy, bạn cũng có được kết quả như thế này:

'onreset' in document.documentElement; // false 
'onreset' in document.createElement('input'); // true 
+1

Có thể điều này sẽ không làm * chính xác * những gì bạn muốn, vì ''onclick' trong document.createElement ('script')' trả về true. Nhưng điều đó chỉ có nghĩa là nếu bạn đưa ra một '

0

tôi nói với bạn đọc this

... và điều tốt nhất bạn phải nghĩ là sự kiện chỉ dành cho đối tượng DOM. Sau đó, tất cả các đối tượng trong DOM, có thể có các sự kiện (Nhưng đọc danh sách).