premetto: non sono problemi o altro, quanto più un chiarimento per una questione di conoscenza personale/generale che sia in merito ad un evento javascript.Dunque, ho realizzato uno script per il resize di un elemento html tramite l'utilizzo del movimento del cursore del mouse.In sostanza il ragionamento è questo: al click avvio una prima funzione che mi immagazina le coordinate attuali del mouse e poi attacca all'evento document.onmousemove la funzione effettiva di resize.In questa eseguo una semplice sottrazione, le coordinate attuali del mouse sottratte quelle vecchie di partenza, la differenza mi ritorna i px che vado ad aggiungere all'height e al width dell'elemento html in questione che, giustamente, si ridimensiona.Ora, il resize verticale funziona perfettamente mentre quello orizzontale invece (basato sullo stesso identico principio usato per quello verticale) no, il totale dei px che mi restituisce lo spostamento orizzontale è perfettamente dimezzato e quindi ho risolto moltiplicando per 2 il risultato della sottrazione (e si, logicamente ora funziona a meraviglia).Tuttavia mi sfugge il perchè: se il mouse si sposta dal px 150 al px 250 in orizzontale, perchè la sottrazione tra vecchie coordinate e nuove mi restituisce 50px anzichè 100 :s ? (in altezza, ripeto, è lo stesso identico processo e non subisce questo dimezzamento). Non mi è un problema in quanto ho risolto ma è una questione di conoscenza personale in quanto tutti (IE, FF, OP, SAF etc..) concordano con la "teoria del dimezzamento" e cercando sul web non ho trovato spiegazioni mirate sull'argomento che ho posto. xDps: si lo so sono un rompibolas, ma non mi accontento di aver risolto la cosa, voglio anche capire anche il perchè avviene questo problema a cui ho dovuto rimediare 😗pps: per ottenere le coordinate del mouse ho utilizzato la seguente funzione
Pagine: 1
15/04/2009 17:03:01
oorazoroo ha scritto: curX = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;curY = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;Funziona alla perfezione.Inoltre ti consiglierei di evitare di testare la versione del browser, ma testare la presenza degli oggetti (è un metodo nettamente migliore e più sicuro che dover prevedere le funzioni supportate da un browser o meno).function mousecoor(e){if (e.clientX){curX = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;curY = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;} else if (e.pageX) { /* Che tutti supportano amorevolmente in egual modo : */curX = e.pageX;curY = e.pageY;}}
Discussione seguita da: » blancks