我有带有 javascript 的 html 页面:
<!DOCTYPE html>
<html>
<head>
<script>
function doWork() {
console.log("\tdoWork-start");
var now = new Date();
var end = now.getTime() + 2000;
while(now < end) {
now = new Date();
}
console.log("\tdoWork-end");
}
function handleOnClick() {
console.log("onclick-start");
console.log("onclick-end");
}
function handleOnchange() {
console.log("onchange-start");
window.open('', 'name', 'height=300,width=600,top=200,left=200');
doWork();
console.log("onchange-end");
}
</script>
</head>
<body>
<form>
<input type="text" onchange="handleOnchange();">
<input type="button" value="ok" onclick="handleOnClick();">
</form>
</body>
</html>
用例:在输入控件中输入一些值并快速单击按钮。我希望控制台中有这样的日志:
onchange-start
doWork-start
doWork-end
onchange-end
onclick-start
onclick-end
但在 Firefox 中,我得到了:
onchange-start
onclick-start
onclick-end
doWork-start
doWork-end
onchange-end
请注意,onclick 执行会中断 onchange 执行。函数 doWork 模拟了一些长时间的工作。在 Chrome 中,它按预期工作。
谁能解释这怎么可能?