Esempio di w3schools: dov'é l'errore?
Autor: Fabio B.
Visitado 1286,
Followers 1,
Compartido 0
http://www.w3schools.com/jsref/event_onscroll.asp
http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_onscroll2
Publicado en
Autor
ok. mistero risolto.
FF e IE non lo supportano; Chrome sì.
Difetto dei browsers!
http://msx5.it/
Autor
stesso problema con le librerie derivate da js: http://stackoverflow.com/questions/9471286/window-scrollfunction-not-working-on-firefox
Se nell'if aggiungi con l'operatore logico OR document.documentElement.scrollTop funzionerà anche con FF (vedi allegato).
http://stackoverflow.com/questions/28633221/document-body-scrolltop-firefox-returns-0-only-js
Autor
interessante...provato e funziona! Grazie
ora a scopo didattico ho "commentato" lo script js e sto tentando di riprodurlo con jQ, ma stranamente, qualunque siano i wrapper utilizzati nella condizione OR, la condizione sembra sempre soddisfatta e l'header viene nascosto già al caricamento della pagina.
In realtà la condizione risulta soddisfatta anche se imposto lo stesso wrapper 2 volte e metto una soglia di 2000px; basta inserire l'operazione di OR:
<script>
$(function() {
if($("body div")||$("body div").scrollTop() > 2000) {
$("#imHeader").addClass("imHidden");
}
else {
$("#imHeader").addClass("");
}
});
</script>
per cautelarmi da eventuali carenze della versione jQuery ho anche inserito una versione più aggiornata:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
Continua ad esserci un intoppo: tu cosa ne pensi?
Che ci sono un po' di errori.
Devi usare removeClass non assegnare una classe "vuota".
Infine, ma non meno importante, usa $(window).scroll()
Qui un esempio da applicare per il tuo scopo:
http://www.unofficialwsx5.com/index.php?topic=1966.msg13867#msg13867
Autor
d'accordo, ma se la mia classe non venisse applicata non dovrei rimuoverla;
la domanda é perché viene applicata subito al caricamento della pagina se io non ho ancora effettuato alcuno scroll? é questo che mi sfugge.
Autor
ho guardato il tuo esempio; é simile al mio primo tentativo che ho tentato di modificare sbagliando qualcosa http://kylewbanks.com/blog/Detecting-Scroll-Events-And-Getting-Scroll-Offset-With-jQuery
ora provo come dici tu...
Autor
success! non ne dubitavo
devo applicarmi un po' di più a jQuery...grazie
a tuo avviso é preferibile per motivi di velocità di caricamento dei documenti necessari applicare la soluzione js pura o quella jQ?
ed é meglio se carico subito lo script in head o lo metto in fondo al body?
Sui tempi di caricamento non saprei ma visto che si sta parlando di WS che carica già la libreria, perché non sfruttarla?
ed é meglio se carico subito lo script in head o lo metto in fondo al body?
Dipende dagli elementi coinvolti e dallo script.
In genere se lo inserisci in HEAD, hai "bisogno" di $(document).ready() o le altre forme di scrittura.
Autor
per quello nella mia modifica avevo inserito la forma contratta di $(document).ready() cioé $(function() { e l'avevo messa in head, per non dover attendere il caricamento dell'intera pagina visto che contiene immagini pesanti; così é efficace prima del caricamento della gallery di fondo;
la soluzione jQuery mi sembra più elegante, ma quella js mi sembra logicamente più funzionale; continuo a non capire per quale motivo la classe imHidden venga attribuita (sicché io la devo rimuovere) senza che io verifichi l'evento preposto
Già che ci sei, anche su JS...
Autor
sì, mi sono già attrezzato di un "mattone" bello pesante della Hoepli per rompere il ghiaccio...
...?
Autor
rinomata fabbrica di laterizi per l'edificazione tecnica ed umana