我一直在研究瀏覽器之間的事件激發順序,因爲我們的應用程序遇到了一些不尋常的行爲。jQuery中的更改順序/ keydown/keypress事件
我創建了一個小測試來查看三個事件的順序:change,keydown和keypress。
下面是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>
這裏是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");
});
});
當I F到文本框中鍵入字母,然後按回車鍵,我得到在Internet Explorer 8如下:
結果
- 鍵不放
- 按鍵
- 變化
- 鍵不放
- 按鍵
,但在Firefox(3.6.8),我得到如下:
結果
- Key down
- 按鍵
- 鍵不放
- 按鍵
- 變化
,因爲我們拍攝的keydown事件回車鍵,但做了一些驗證與變化事件的順序是顯著改變事件。
我看了一下,但一直沒有找到問題所在。
這是預期的行爲? 所有瀏覽器是否應該按指定順序觸發jQuery事件? 或者我們應該刪除事件觸發順序的所有假設嗎? 或者還有其他的東西是我沒有想到的方式?
我很驚訝這還沒有解答,因爲我本來以爲,通過有趣的行爲IE瀏覽器。也許IE有太多有趣的行爲。 – Russell 2010-08-13 04:24:37
我可以確認IE9在這方面的行爲與IE8相同。 – nickf 2011-03-17 18:35:15