Qual è la differenza tra screenX/ Y, clientX/ Ye pageX/ Y?
Anche per iPad Safari, i calcoli sono simili a quelli sul desktop — O c'è qualche differenza a causa del viewport?
Sarebbe bello se potessi indicarmi un esempio.
Qual è la differenza tra screenX/ Y, clientX/ Ye pageX/ Y?
Anche per iPad Safari, i calcoli sono simili a quelli sul desktop — O c'è qualche differenza a causa del viewport?
Sarebbe bello se potessi indicarmi un esempio.
Risposte:
In JavaScript:
pageX, pageY, screenX, screenY, clientX, E clientYrestituisce un numero che indica il numero di “pixel CSS” fisici un punto è dal punto di riferimento. Il punto dell'evento è dove l'utente ha fatto clic, il punto di riferimento è un punto in alto a sinistra. Queste proprietà restituiscono la distanza orizzontale e verticale da quel punto di riferimento.
pageXe pageY:
relativo alla parte superiore sinistra dell'area di contenuto con rendering completo nel browser. Questo punto di riferimento si trova sotto la barra dell'URL e il pulsante Indietro in alto a sinistra. Questo punto può trovarsi ovunque nella finestra del browser e può effettivamente cambiare posizione se ci sono pagine scorrevoli incorporate incorporate all'interno di pagine e l'utente sposta una barra di scorrimento.
screenXe screenY:
rispetto alla parte superiore sinistra dello schermo / monitor fisico, questo punto di riferimento si sposta solo se si aumenta o diminuisce il numero di monitor o la risoluzione del monitor.
clientXe clientY:
relativo al bordo superiore sinistro dell'area del contenuto ( il riquadro di visualizzazione ) della finestra del browser. Questo punto non si sposta anche se l'utente sposta una barra di scorrimento all'interno del browser.
Per una visualizzazione su quali browser supportano quali proprietà:
http://www.quirksmode.org/dom/w3c_cssom.html#t03
w3schools ha un interprete e un editor Javascript online in modo da poter vedere cosa fanno ciascuno
http://www.w3schools.com/jsref/tryit.asp?filename=try_dom_event_clientxy
<!DOCTYPE html>
<html>
<head>
<script>
function show_coords(event)
{
var x=event.clientX;
var y=event.clientY;
alert("X coords: " + x + ", Y coords: " + y);
}
</script>
</head>
<body>
<p onmousedown="show_coords(event)">Click this paragraph,
and an alert box will alert the x and y coordinates
of the mouse pointer.</p>
</body>
</html>
Ecco un'immagine che spiega la differenza tra pageYe clientY.

Lo stesso per pageXe clientX, rispettivamente.
pageX/Y le coordinate sono relative all'angolo in alto a sinistra dell'intera pagina renderizzata (comprese le parti nascoste mediante scorrimento),
mentre le clientX/Ycoordinate sono relative all'angolo in alto a sinistra della parte visibile della pagina, "viste" attraverso la finestra del browser.
Probabilmente non ne avrai mai bisogno screenX/Y
screenX/Y?
pageX/pageYdovrebbe essere usato al posto di clientX/clientY?
<html>all'elemento in pixel CSS.viewportpixel CSS.screenpixel del dispositivo.Per quanto riguarda la tua ultima domanda se i calcoli sono simili sui browser desktop e mobile ... Per una migliore comprensione - sui browser mobili - dobbiamo differenziare due nuovi concetti: il viewport del layout e il viewport visivo . Il viewport visivo è la parte della pagina attualmente visualizzata sullo schermo. La finestra di layout è sinonimo di una pagina intera visualizzata su un browser desktop (con tutti gli elementi che non sono visibili nella finestra corrente).
Sui browser mobili, i pageXe pageYsono ancora relativi alla pagina in pixel CSS in modo da poter ottenere le coordinate del mouse relative alla pagina del documento. D'altra parte clientXe clientYdefinire le coordinate del mouse in relazione alla finestra visiva .
C'è un altro thread stackover qui per quanto riguarda le differenze tra la vista visiva e la vista layout: differenza tra vista visiva e vista layout?
Un'altra buona risorsa: http://www.quirksmode.org/mobile/viewports2.html
Ciò che mi ha aiutato è stato quello di aggiungere un evento direttamente a questa pagina e fare clic da solo! Apri la tua console in strumenti per sviluppatori / Firebug ecc. E incollalo:
document.addEventListener('click', function(e) {
console.log(
'page: ' + e.pageX + ',' + e.pageY,
'client: ' + e.clientX + ',' + e.clientY,
'screen: ' + e.screenX + ',' + e.screenY)
}, false);
Click anywhere
Con questo frammento, è possibile tenere traccia della posizione dei clic mentre si scorre, si sposta la finestra del browser, ecc.
Notare che pageX / Y e clientX / Y sono gli stessi quando si scorre fino in cima!
La differenza tra queste dipenderà in gran parte dal browser a cui ti riferisci attualmente. Ognuno implementa queste proprietà in modo diverso o per niente. Quirksmode ha un'ottima documentazione relativa alle differenze del browser rispetto agli standard W3C come DOM e JavaScript Events.