자바 스크립트에서 마우스 클릭을위한 핸들러를 만들고 싶습니다. 그런 다음, 다음 코드 행을 실행하기 전에 몇 초 동안 "busy-wait"할 수 있기를 원합니다. * 그러나 "busy-wait"에서는 마우스 클릭 이벤트를 계속 처리 할 수 있습니다.JavaScript에서 'onmousedown'이 호출되지 않습니다.
다음 코드는 왜 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는 실제로 세미콜론을 신경 쓰지 않으므로 불행히도 문제가되지 않습니다. (간단합니다.) 나는 루비와 파이썬에 익숙하므로 세미콜론을 사용하지 않는다. 하지만 팁 주셔서 감사합니다. 천천히 JS로 변환 중입니다 –
Javascript는 세미콜론에 대해주의를 기울이지 만 일부 브라우저는 그렇지 않으므로 분실 된 세미콜론을 자신의 재량에 따라 삽입합니다. 필자는 사양을 고수하고 세미콜론을 명시 적으로 사용하는 것이 좋습니다. –