Newsgroup: it.comp.lang.javascript
Titolo: posizione barra di scorrimento

Salute figlioli belli,
è un bel po' che non mi faccio vivo, ma è anche vero che non mi occupo
di web da una vita, dunque sono automaticamente scusato :-) Augurandomi
che stiate tutti bene, procedo col quesito.
Ho bisogno di rilevare la posizione della barra di scorrimento verticale
di una pagina; che io ricordi in certi casi si individua con:
- document.body.scrollTop
in altri con:
- window.pageYOffset
Bene. Quale procedimendo mi consigliate per ottenere la massima
compatibilità con i browser attualmente più diffusi?
Siccome mi par di ricordare che il primo metodo viene usato da IE,
pensavo di cavarmela con un semplice operatore ternario che agisce in
questo modo:
posizione=(document.all)?document.body.scrollTop:window.pageYOffset;
e infatti in casa mia fila tutto liscio (ma uso un Mac, la cui ultima
versione di IE è la 5). 
Ieri sera ho fatto fare il test a mia nipote che ha Windows XP, e che -
al telefono - non è stata in grado di dirmi quale versione di IE stava
usando; fatto sta che il mio script ha miseramente fallito. Che poi mi
sembrava una stupidaggine: ho solo bisogno di far scorrere la pagina
fino al punto "0" (cioè farla tornare in alto) dopo aver cliccato su un
link in basso:
if (posizione > 0) {
window.scrollBy(salgo in su)
}
Che mi dite? Thanks :)
-- 
mailto: y = i
------------------------------------------------------
http://www.catarsi.it
Vivo nel terrore di non essere frainteso (Oscar Wilde)

 link in basso:
Se e' solo questo perche' non un semplice "anchor" in html?

 Se e' solo questo perche' non un semplice "anchor" in html?
Come ultima spiaggia sě, ma se c'č modo di farla salire con un effettino
di ascesa "progressivamente piů veloce" preferirei: l'occhio ne gode; e
sai, quella la fai solo in js. Oltretutto, come dicevo, qui funziona
ovunque: ho IE5x (il piů anziano, ma anche il piů recente IE per Mac) e
le ultime versioni di Safari, di Camino, di Opera e di Firefox. 


 Ho bisogno di rilevare la posizione della barra di scorrimento verticale
Dai un'occhiata ai seguenti slider cross-browser:
http://docs.jquery.com/UI/Slider
http://dev.jquery.com/view/tags/ui/1.5b2/demos/ui.slider.html
http://interface.eyecon.ro/demos/slider.html
http://www.filamentgroup.com/lab/developing_an_accessible_slider/
http://ui.jquery.com/repository/real-world/range-interface/

 le ultime versioni di Safari, di Camino, di Opera e di Firefox. 
Ok allora mi rimangio tutto e ripartiamo, anche se pure io sono un po' 
arrugginito in quanto a compatibilita' tra browser.
Che io sappia tutti i browser supportano la proprieta' scrollTop e ie e' 
l'unico a non conoscere pageYOffset.
L'unico problema l'ho notato con webkit (nel mio caso Safari 3.1.2 e 
Chrome 0.3 su Windows) cambiando il doctype: applicando un doctype xhtml 
la proprieta' document.documentElement.scrollTop vale zero, mentre viene 
valorizzata document.body.scrollTop.
Opera se ne fotte e valorizza sempre tutte e tre le proprieta', gli 
altri le valorizzano a seconda del doctype.
In sintesi se hai un doctype html io userei tranquillamente 
document.body.scrollTop, altrimenti:
var scrTop = window.pageYOffset || document.documentElement.scrollTop;
Date le differenze di cui sopra, per impostare il valore e' meglio 
usare, come hai detto, i metodi scrollTo / scrollBy.

 var scrTop = window.pageYOffset || document.documentElement.scrollTop;
In questo caso è IE5/Mac a non volerne sapere. Ma credo di aver risolto
aggiungendo un "or":
var scrTop = window.pageYOffset || document.documentElement.scrollTop ||
document.body.scrollTop;
Grazie dell'idea. Se a questo punto vuoi/volete dargli una "testata"
basta un clic:
http://www.catarsi.it/altro/


 document.body.scrollTop;
In effetti browser cosi' vecchi non li avevo neanche presi in 
considerazione, ma se li vogliamo bisognerebbe anche verificare 
l'esistenza degli oggetti.
Cosi' dovrebbe andare dappertutto a prescindere dal doctype:
function getScrollTop(){
     var de = document.documentElement, db = document.body;
     return scrTop = window.pageYOffset >= 0 ? window.pageYOffset :
                     de && de.scrollTop > 0 ? de.scrollTop :
                     db && db.scrollTop > 0 ? db.scrollTop : 0;
}

 }
Ovviamente scrTop e' rimasto da un copia / incolla:
function getScrollTop(){
     var de = document.documentElement, db = document.body;
     return window.pageYOffset >= 0 ? window.pageYOffset :


 function getScrollTop() {
Mi sembra cosa buona e giusta, adotterò il tuo metodo; e se mi accorgo
che salta fuori qualche rogna ti saprò dire. Grazie ancora.


 }
Giusto per utilizzare qualche features di JS che tanto mi piacciono, e
anche per rompere un po' le scatole al caro Scarta, propongo:
function getScrollTop(){
	var de = document.documentElement||{}, db = document.body||{};
	return window.pageYOffset||de.scrollTop||db.scrollTop||0;
}
E nel contempo saluto i due grandi "assenteisti" che fa sempre piacere
vedere da queste parti. :)
-- 
~ "Viviamo dei vuoti lasciati da qualcun'altro."

 ~ "Viviamo dei vuoti lasciati da qualcun'altro."
E' tanto malinconica quanto vera. Bella. Ma togli quell'apostrofo alla
ca§§o di cane perché nun ze pò véde :-D


 ca§§o di cane perché nun ze pò véde :-D
Eh!

 ca§§o di cane perché nun ze pò véde :-D
Ops. :D Copia & Incolla senza cognizione di causa, pardon. :)
-- 
~ "Gli affetti profondi somigliano alle donne oneste;
hanno paura di essere scoperte e passano nella vita
con gli occhi bassi." (G. Flaubert)

 L'uso dell'operatore per sfruttare il "typecasting" di js
Ora, io so cosa vuoi intendere. Tu sai cosa vuoi intendere. Molti su
questo NG capiranno cosa vuoi intendere. Ma anche se l'hai messo tra
virgolette, è decisamente fuori luogo. Anche perché non fa niente di
simile al type-casting.
Lo fai usando l'operatore not, o l'operatore unario, o gli operatori
bitwise ad esempio. Ma non con gli operatori di comparazione. :)
-- 
~ "L'arte non riproduce cio' che e' visibile,ma rende visibile cio'
che non  sempre lo e'" (Paul Klee)

 solito. :)
E' proprio in virtù dell'altrui verbosità che nel tempo mi son creato
quelle poche ma importanti (e soprattutto divertenti) nozioni
informatiche. Dunque grazie di tutto; il tuo post non è di quelli che si
archiviano: va direttamente incorniciato :-)  Davvero illuminante, non
speravo tanto.
Grazie anche allo Scarta, come lo chiami tu, uomo che vorrei avere avuto
come compagno di banco al liceo.
A presto ^__-
