Sto lottando con apparentemente un semplice esercizio javascript, scrivendo un trascinamento della selezione. Penso Im commettendo un errore con i miei 'addeventlisteners', ecco il codice:Semplice codice drag and drop
var ele = document.getElementsByClassName ("target")[0];
var stateMouseDown = false;
//ele.onmousedown = eleMouseDown;
ele.addEventListener ("onmousedown" , eleMouseDown , false);
function eleMouseDown() {
stateMouseDown = true;
document.addEventListener ("onmousemove" , eleMouseMove , false);
}
function eleMouseMove (ev) {
do {
var pX = ev.pageX;
var pY = ev.pageY;
ele.style.left = pX + "px";
ele.style.top = pY + "px";
document.addEventListener ("onmouseup" , eleMouseUp , false);
} while (stateMouseDown === true);
}
function eleMouseUp() {
stateMouseDown = false;
document.removeEventListener ("onmousemove" , eleMouseMove , false);
document.removeEventListener ("onmouseup" , eleMouseUp , false);
}
Grazie per la risposta dettagliata. Stavo usando Do While per mousemove mentre il mouse è attivo, altrimenti non dovrebbe essere eseguito ... se abilito il ciclo Do While, Firefox si ferma comunque. – Kayote
@Kayote Ho capito, anche se non sarà necessario a causa di quanto spesso l'evento 'mousemove' chiama' eleMouseMove() ' – iRector
L'ho aggiornato un po 'per il mio requisito. Può essere utile anche per gli altri, quindi http://jsfiddle.net/kjwLe9bq/ sharing. – Savaratkar