Questa è una pagina coi link interni...
codice:http://pugniespinaci.altervista.org/mondo.php
Questa è una pagina coi link interni...
codice:http://pugniespinaci.altervista.org/mondo.php
Testato con FF, CH e ED/IE su desktop; il problema del #top lo riscontro solo su CH. Con lo script proposto ho verificato che Chrome non applica lo scorrimento sul target se il valore di location.hash non è cambiato. Andando per tentativi ho quindi provato a "ripulire" questa proprietà prima di riassegnare il valore; in questo modo vedo che funziona.
Prova in questo modo:
codice:$('a[href^="#"]').click(function(e){ scrollOn(this.hash); e.preventDefault(); }); function scrollOn(a){ location.hash = ''; location.hash = a; window.scrollBy(0, -86); } $(function(){if (location.hash) scrollOn(location.hash);});Le ultime parole famose Purtroppo il problema non è né JavaScript né CSS né HTML ma è il differente modo con cui questi linguaggi vengono interpretati da ogni singolo browser.Originariamente inviata da Gas75
Questo dipende dal fatto che andiamo ad aggiustare lo scroll nella funzione ready della pagina; in sostanza, solo dopo che il documento è stato caricato e, presumibilmnete, è già avvenuto lo scroll di default. Chiaramente è necessario che lo scroll di default avvenga prima di effettuare l'aggiustamento con l'applicazione dell'offset.C'è anche un'altra stranezza rilevata da smartphone: i link che puntano a un hashtag di un'altra pagina non sono precisi, cioè la pagina si carica ma quasi subito fa uno scatto e scende...
Penso sia un compromesso che devi prendere così, non penso si possa evitare e non so se si possa migliorare.
EDIT:
aspetta, per "fa uno scatto e scende" intendi che si posiziona inizialmente senza offset e poi viene applicato mostrando quindi lo scatto (ma posizionandosi correttamente) o, al contrario, viene applicato l'offset ma poi avviene l'azione di default quindi lo scroll torna al valore senza offset?
Ultima modifica di KillerWorm; 12-05-2020 a 22:50
Installa Forum HTML.it Toolset per una fruizione ottimale del Forum
Scusa se non ho risposto prima, sono stato impegnato in altro, e ieri c'era un problema nell'accedere alle discussioni di tutto il forum.
Non ho ancora testato il nuovo codice, grazie comunque...
Inizialmente si posiziona nel punto giusto, cioè sull'id corretto, posizionato appena sotto la navbar fissa, poi però scende di parecchio (in sostanza l'H2 dell'id finisce quasi in fondo alla schermata). Quindi la pagina complessivamente scende di una quantità eccessiva, ma esclusivamente da smartphone, in quei pochi casi di link verso id di pagine diverse...aspetta, per "fa uno scatto e scende" intendi che si posiziona inizialmente senza offset e poi viene applicato mostrando quindi lo scatto (ma posizionandosi correttamente) o, al contrario, viene applicato l'offset ma poi avviene l'azione di default quindi lo scroll torna al valore senza offset?
No problem sì, c'è stato un blocco ieri mattina, qualche ingranaggio arrugginito della piattaforma, poi di pomeriggio ha ripreso a funzionare, deve essere che gli hanno spruzzato un po' di svitol.Scusa se non ho risposto prima, sono stato impegnato in altro, e ieri c'era un problema nell'accedere alle discussioni di tutto il forum.
ok, fai sapere.Non ho ancora testato il nuovo codice, grazie comunque...
in tal caso la situazione non mi quadra.Inizialmente si posiziona nel punto giusto [...] Quindi la pagina complessivamente scende di una quantità eccessiva...
La gestione dei link ad altre pagine con hashtag viene fatta da quell'ultima riga di script dove l'offset viene aggiunto sostanzialmente una volta caricata la pagina, cioè attraverso il ready (la funzione $() di jQuery) che si verifica appena la pagina è pronta; ma anche se il ready dovesse non rispondere in modo corretto, lo scorrimento dovrebbe tuttalpiù posizionarsi ignorando gli 86px di offset. Però da quello che dici si posiziona in modo inconsistente.
Se posti un link esatto in cui si presenta questo problema, provo a fare qualche verifica.
Installa Forum HTML.it Toolset per una fruizione ottimale del Forum
Il nuovo script funziona!
In sostanza
cancella quello che c'è nell'url da # in poi?codice:location.hash = '';
Per quanto riguarda l'altra stranezza, può essere correlata con la comparsa di un banner pubblicitario dopo il caricamento della pagina?
BeneIl nuovo script funziona!
Più esattamente solo ciò che c'è dopo #.location.hash = '';
cancella quello che c'è nell'url da # in poi?
Quando si modifica tale proprietà il comportamento è evidentemente diverso tra i vari browser. Su FF infatti vedo che anche riassegnando lo stesso valore viene eseguito comunque lo scroll (anche se sullo stesso identico punto), mentre a quanto pare non è così per CH in cui appunto è necessario che il valore risulti modificato per effettuare nuovamente lo scroll. Quella riga forza sostanzialmente la modifica di tale valore.
Non so dirti ma a questo punto potrebbe dipendere da qualsiasi cosa.Per quanto riguarda l'altra stranezza, può essere correlata con la comparsa di un banner pubblicitario dopo il caricamento della pagina?
Ripeto, se puoi postare un link esatto posso verificare di persona.
Installa Forum HTML.it Toolset per una fruizione ottimale del Forum