2012-05-17 34 views
5

Tôi sắp cập nhật mã của mình để sử dụng addEventListener() chỉ bằng cách viết vào thuộc tính phần tử trong javascript.Tôi làm cách nào để cập nhật lên addEventListener?

Trước khi tôi làm điều này, tôi muốn xác minh một vài điều.

1.) Tôi giả sử rằng tôi không phải gọi removeEventListener(), nếu tôi cập nhật DOM và xóa các phần tử (bằng .innerHTML write).

2.) addEventListener được hỗ trợ trên các trình duyệt phổ biến hiện đại - IE9, Chrome, Firefox, Safari

3.) Không có vấn đề khác mà có thể arrise trên các trình duyệt hiện đại.

Tôi đang hỏi b.c. Tôi không muốn nhảy súng khi cập nhật mã của mình.

Ghi chú:

tài sản để tương quan sự kiện (tháo trên).

  • onkeypress - bấm phím
  • onblur -> blur
  • onfocus -> tập trung

Nghiên cứu

https://developer.mozilla.org/en/DOM/element.addEventListener (Có khả năng tương thích Chart)

http://www.quirksmode.org/js/events_advanced.html

liên quan

JavaScript listener, "keypress" doesn't detect backspace?

Ghi chú

  • Thay vì trả lại sai. Sử dụng preventDefault() để ngừng các biểu mẫu gửi khi nhập.
+0

giả định của bạn là chính xác ... hãy truy cập ... btw, lưu trữ bản sao của tệp hiện tại trong trường hợp bạn không có! –

+0

Được rồi .... nếu có bất kỳ sự cố nào ... Tôi sẽ đăng chúng ở đây. –

+0

@ CS_2013 Đối với 'addEventListener', đó là nhấn phím. Ngoài ra, bạn có thể muốn sử dụng jQuery để làm cho mọi thứ qua trình duyệt. Dưới mui xe, nó sử dụng 'addEventListener' nếu có thể, có thể rơi trở lại' attachEvent' cho IE cũ hơn và cũng bình thường hóa đối tượng sự kiện của bạn, vì vậy bạn không phải lo lắng về sự khác biệt. – kapa

Trả lời

3
  1. Bạn không cần phải. Nếu bạn không lưu trữ các tham chiếu đến phần tử DOM (trong các biến toàn cục vô tình chẳng hạn), thì trình thu gom rác sẽ làm sạch nó.

  2. Đó là hỗ trợ của trình duyệt. Đối với các trình duyệt IE cũ hơn, có attachEvent(), trong đó gần như giống nhau.

  3. Không có gì mà bạn nên lo lắng. Đây là con đường hiện đại để đi.

Lưu ý: bạn có thể muốn sử dụng jQuery để làm điều qua trình duyệt. Dưới mui xe, nó sử dụng addEventListener nếu có thể, có thể quay trở lại attachEvent cho IE cũ hơn và cũng normalizes your event object, vì vậy bạn không phải lo lắng về sự khác biệt. Nó cũng là tuyệt vời cho thao tác DOM và traversal.

+0

Tôi không sử dụng hình cầu ... vì vậy tôi tốt ở đó. –

4

1) Bạn không cần phải gọi removeEventListener cho rằng vấn đề nhưng bạn sẽ cần phải gọi removeEventListener nếu bạn loại bỏ các phần tử DOM gắn liền với eventListener qua addEventListener, nếu bạn loại bỏ bất kỳ con của nó bạn don 't cần phải loại bỏ bất cứ điều gì.

2) addEventListener được hỗ trợ trên tất cả các trình duyệt chính

3) Không có vấn đề khác trên các trình duyệt hiện đại liên quan đến addEventListener

4) onkeypress không là tên của một sự kiện mà là một thuộc tính, sự kiện tên là nhấn phím.Tương tự cho các tên khác trên * như nhau

Một mã nhanh chóng để tránh jQuery để tương thích qua trình duyệt:

Element.prototype.on = function(evt, fn) { 
if (this.addEventListener) 
    this.addEventListener(evt, fn, false); 
else if (this.attachEvent) 
    this.attachEvent('on' + evt, fn); 
}; 

Element.prototype.off = function(evt, fn) { 
    if (this.removeEventListener) 
     this.removeEventListener(evt, fn, false); 
    else if (this.detachEvent) 
     this.detachEvent('on' + evt, fn); 
}; 
+0

mã sạch đẹp ... tôi có nên hỗ trợ các trình duyệt cũ hơn không Tôi sẽ bao gồm ... –

Các vấn đề liên quan