在Javascript中,我想创建一个鼠标点击处理程序。然后,我希望能够在运行下一行代码之前“忙等待”几秒钟*但在“忙等待”中,我仍然能够处理鼠标单击事件。'onmousedown'未被JavaScript调用
为什么下面的代码会完全运行while
循环,然后激活处理程序? (如,为什么不鼠标点击事件处理程序不断得到所谓的中间忙碌等待while
循环?)
<html>
<body>
<p id="debugMessageElement"> </p>
<script type="text/javascript">
canvas=document.createElement("canvas")
var ctx = canvas.getContext("2d");
canvas.width = 840;
canvas.height = 560;
document.body.appendChild(canvas);
var mouse_input = function(event){
document.getElementById("debugMessageElement").innerHTML = event.pageX + ", " + event.pageY + "<br />"
}
canvas.onmousedown = mouse_input;
timeallowed = 3
start = Date.now()
while(true){
now = Date.now()
delta = now - start
if(delta >= timeallowed*1000){
document.write("" + timeallowed + " seconds has passed")
break;
}
}
</script>
</body>
</html>
*是我设计就像上面我的代码的原因是最终因为我想这样做:
for(p in person){
for(t in person[p].shirts){
busy_wait_5_seconds() //However, I want to process mouse clicks in these five seconds.
//THEN move on to the next shirt... After five seconds...
}
}
PS如果您要测试此代码,请注意我使用了HTML5画布,因此某些浏览器可能无法工作?
你错过了分号,特别是在你的'debugMessageElement'行。可能会造成问题.. –
抱歉。 Javascript实际上并不关心分号,所以不幸的是这不是问题(我希望它很简单!)。我习惯于Ruby和Python,所以我不使用分号。但谢谢你的提示。我正在慢慢转换到JS –
JavaScript是否关心分号码,但一些浏览器不会,他们会自行决定插入缺少的分号码。我强烈建议你坚持规范并明确使用分号。 –