2011-08-04 11 views
6
<!doctype html> 
<body> 
<input onblur="alert('b');"> 
<button onmousedown="alert('m');">a</button> 
</body> 

Vì một số lý do làm mờ dường như kích hoạt trước trên FF/IE (nhưng mousedown dường như kích hoạt trước cho Chrome/Safari).Trước tiên có nên làm mờ hoặc mousedown không?

Tuy nhiên, khi chúng ta thay đổi mã này:

<!doctype html> 
<body> 
<input onblur="document.title+='b';"> 
<button onmousedown="document.title+='m';">a</button> 
</body> 

Bây giờ đối với một số lý do mousedown dường như bắn đầu tiên cho tất cả các trình duyệt.

1) Điều gì có thể giải thích cho sự bất thường này?

2) Dựa trên thông số W3C, phải là hành vi tiêu chuẩn là gì?

Trả lời

1

Ôi trời, đó là một câu chuyện không bao giờ xảy ra. Tôi không muốn biết tôi đã dành bao nhiêu giờ để tính toán hành vi đó một cách chính xác. Như bạn đã đề cập, nó hoạt động khác nhau, do đó, thực sự không có "đúng". Tuy nhiên tôi không biết nhiều về đặc tả W3C về trường hợp cụ thể này (nếu có actuall là một?), Nhưng để biết, bạn phải tạo ra một số logic để có những thứ được bắn theo đúng thứ tự. Đó là tho khá kinh tởm.

+0

giải pháp bạn thường sử dụng là những gì ? Tôi đang sử dụng * flag + setTimeout, 1 * cách nhưng nó cảm thấy thực sự bẩn – Pacerier

9

Vì vậy, cho thử nghiệm này tôi đã thực hiện này fiddle

<input onblur="document.getElementById('msg').innerHTML+=new Date().getTime()+' - blur<br/>'"> 
<button onmousedown="document.getElementById('msg').innerHTML+=new Date().getTime()+' - md<br/>'">a</button> 
<div id="msg">---<br/></div> 

Trên Windows XPSP3, trong Fx5, IE8, Opera 11, Safari5, Chrome 13 đó là tất cả MouseDown đầu tiên, mờ sau

UPDATE: TRỪ khi bạn sử dụng cảnh báo. Bạn không thể dựa vào bất cứ điều gì làm việc theo cách bạn muốn họ nếu bạn đặt một cảnh báo ở đâu đó.

Ví dụ một số (cũ) trình duyệt sẽ đi vào một vòng lặp không bao giờ kết thúc nếu bạn thông báo một onblur lỗi và sau đó cố gắng tập trung vào lĩnh vực vi phạm, sau đó sẽ làm mờ trống trường tiếp theo

+0

tuyên bố mạnh mẽ. cũng vậy với tôi. nhưng làm thế nào để bạn giải thích sự bất thường cho mã được hiển thị trong câu hỏi trong IE và FF? – Pacerier

+0

Cảnh báo đó kích hoạt hiệu ứng nhòe nhanh hơn mousedown? Tất cả mọi phiên cược đều bị tắt khi bạn cảnh báo điều gì đó. – mplungjan

+0

có cảnh báo đó sẽ làm mờ nhanh hơn so với hình ảnh mờ. nó sẽ là trường hợp cho bạn quá – Pacerier

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