2013-03-20 41 views
6

Ai đó có thể giải thích cho tôi những gì dòng mã này có nghĩa là:Tại sao trình xử lý sự kiện này sử dụng "e = e || event"?

function(e) { e = e || event; e.returnValue = false; return false; } 

Tại sao các tham số có tên e?
Nếu tôi thay đổi thành 'myparam', nó có hoạt động không?
e = e có nghĩa là gì?

Biến số event (sau ||) được khai báo ở đâu? e.returnValue?

+1

Hãy nhớ đặt một câu hỏi tại một thời điểm. Và tìm kiếm trước. –

+0

Đó là một câu hỏi. Những người khác chỉ làm sáng tỏ ý nghĩa của chính câu hỏi đó! –

Trả lời

11

Đây là tất cả các tổ chức sự kiện cơ bản, mặc dù nó thiếu e.preventDefault() ...

Để phá vỡ nó xuống, khi một event handler là bắn:

  • Một số trình duyệt thông qua một tham số để gọi lại giữ dữ liệu sự kiện (đây là cách tuân thủ tiêu chuẩn để thực hiện)
  • Các trình duyệt khác (chủ yếu là IE cũ) thay vào đó đặt dữ liệu sự kiện trong window.event (được truy cập tại đây chỉ với event, điều này rất nguy hiểm. không lo cal biến với tên đó)

Tiếp theo, e = e || event; là một cách tiêu chuẩn nói "nếu tham số đã không được thông qua, mặc định nó để bất cứ điều gì sau khi các ||". Trong trường hợp này, nếu tham số sự kiện không được truyền, thì nó sẽ tìm biến toàn cầu.

e.returnValue là một trong ba cách để ngăn sự kiện gây ra hành động mặc định của sự kiện. Hai loại còn lại là e.preventDefault && e.preventDefault() (không hiển thị rõ ràng mã bạn đã đăng) và return false;

1

Đoạn kiểm tra mã là gì nếu một đối tượng e tồn tại, nếu không sử dụng đối tượng event và gán nó vào e. Sau đó nó đặt thuộc tính returnValue thành false và trả về false.

Đây là mã chạy trên IE và các trình duyệt khác theo cùng một cách, bất kể đối tượng sự kiện có được gọi là e hoặc event hay không.

+2

Tôi tìm thấy "đặt nó thành e" mơ hồ - cách nào là bài tập đi? Có lẽ "gán nó cho e" sẽ rõ ràng hơn ... –

1

Dòng này chỉ làm cho IE8 trở xuống hoạt động giống như tất cả các trình duyệt khác. Tất cả các trình duyệt khác chuyển phần tử đích (e) đến hàm sự kiện.

Vậy đoạn mã này thực hiện là:

Nếu e tồn tại, giữ e. Nếu nó không tồn tại, bạn đang sử dụng phiên bản cũ hơn của IE và chúng tôi gán đối tượng windows.event cho e. Bây giờ tất cả các trình duyệt đều hoạt động theo cùng một cách.

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