Ciao a tutti,
Anticipo che non sono un utente esperto in JavaScript, però mi trovo a dover risolvere un problema che non riesco a risolvere e spero mi possiate aiutare.
Ho una immagine dichiarata cosi:
codice HTML:<img id="protoImage" src="/path/to/img.png" onmousedown="tsMouseDown()" onmouseup="tsMouseUp()" onmouseout="tsMouseOut()" ondragstart='return false;'/>
E finché il tasto del mouse è premuto, dovrei eseguire un timer e svolgere delle determinate funzioni una volta passati alcuni ms, per esempio mezzo secondo.
Finora sono riuscito a scrivere questo codice:
codice:var lastTime = 0; var now = 0; var tmptimer = 0; var loopFlag = false; var timeFlag = false; function tsMouseDown() { loopFlag = true; timeFlag = false; var div = document.getElementById("debugDiv"); div.textContent = "tsMouseDown..."; lastTime = new Date().getTime(); var tmptimer = lastTime; while((loopFlag == true) && ((tmptimer - lastTime) <= 500)) { tmptimer = new Date().getTime(); } if((tmptimer - lastTime) >= 500) { timeFlag = true; div.textContent = "tsMouseDown ... 500 ms passed"; } } function tsMouseUp() { loopFlag = false; var div = document.getElementById("debugDiv"); now = new Date().getTime(); if(timeFlag == false) div.textContent = "tsMouseUp: " + (now - lastTime) + "< 500 ms..."; else div.textContent = "tsMouseUp: " + (now - lastTime) + "> 500 ms..."; } function tsMouseOut() { var div = document.getElementById("debugDiv"); div.textContent = "tsMouseOut: 0"; }
Il problema sembra essere il ciclo while nella funzione tsMouseDown(), perché anche se il tasto del mouse viene rilasciato, il timer sempre sorpassa i 500 ms, come se il flag loopFlag non fosse settato a false...
Purtroppo, date le mie scarse conoscenze in Javascript e Ajax, non sò come risolvere il problema..
Ringrazio in anticipo.
![]()

, però mi trovo a dover risolvere un problema che non riesco a risolvere e spero mi possiate aiutare.
Rispondi quotando