Tôi đã điều tra lệnh ngăn chặn sự kiện giữa các trình duyệt, vì ứng dụng của chúng tôi đang gặp phải một số hành vi bất thường.Thứ tự thay đổi/phím tắt/nhấn phím trong jQuery
Tôi đã tạo một thử nghiệm nhỏ để xem thứ tự của ba sự kiện: thay đổi, nhấn phím và nhấn phím.
Dưới đây là HTML (test.html):
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script>
<script src="test.js"></script>
</head>
<body>
<input type="text" id="TextBox" />
<input type="button" id="Button" value="Clear Results"/>
<hr />
<table id="ResultTable" style="width: 100px">
<tr><th>Results</th></tr>
</table>
</body>
</html>
Đây là JS (test.js):
/*
Appends event information to display table.
*/
$(document).ready(function() {
$("#TextBox").change(function() {
$("<tr><td>Change</td></tr>").appendTo("#ResultTable");
});
$("#TextBox").keydown(function() {
$("<tr><td>Key down</td></tr>").appendTo("#ResultTable");
});
$("#TextBox").keypress(function() {
$("<tr><td>Key press</td></tr>").appendTo("#ResultTable");
});
$("#Button").click(function() {
$("#ResultTable").empty();
$("<tr><th>Results</th></tr>").appendTo("#ResultTable");
});
});
Khi tôi gõ chữ f vào textbox, sau đó nhấn enter , tôi nhận được sau trong trình duyệt Internet Explorer 8:
Kết quả
- chính xuống
- báo chí chính
- Thay đổi
- chính xuống
- báo chí chính
Nhưng trong Firefox (3.6.8), tôi nhận được như sau:
Kết quả
- Nhập phím .210
- chính báo chí
- chính xuống
- báo chí chính
- Thay đổi
Thứ tự của các sự kiện thay đổi có ý nghĩa khi chúng ta đang nắm bắt được nhập quan trọng trong sự kiện KeyDown, nhưng làm một số xác nhận với thay đổi sự kiện.
Tôi đã có một cái nhìn xung quanh, nhưng không thể xác định được vấn đề ở đâu.
Hành vi này có được mong đợi không? Tất cả các trình duyệt có nên kích hoạt các sự kiện jQuery theo một thứ tự cụ thể không? Hoặc chúng ta có nên xóa tất cả các giả định cho thứ tự bắn sự kiện không? Hay có điều gì khác đang diễn ra theo cách tôi không nghĩ đến?
Tôi ngạc nhiên này không có câu trả lời nào như tôi đã có thể nghĩ nó như là hành vi thú vị bằng I E. Có thể IE có quá nhiều hành vi thú vị. – Russell
Tôi có thể xác nhận rằng IE9 hoạt động giống như IE8 trong lĩnh vực này. – nickf