Esempio di w3schools: dov'é l'errore?
Auteur : Fabio B.
Visité 1285,
Followers 1,
Partagé 0
http://www.w3schools.com/jsref/event_onscroll.asp
http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_onscroll2
Posté le
Auteur
ok. mistero risolto.
FF e IE non lo supportano; Chrome sì.
Difetto dei browsers!
http://msx5.it/
Auteur
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
Auteur
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
Auteur
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.
Auteur
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...
Auteur
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.
Auteur
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...
Auteur
sì, mi sono già attrezzato di un "mattone" bello pesante della Hoepli per rompere il ghiaccio...
...?
Auteur
rinomata fabbrica di laterizi per l'edificazione tecnica ed umana