Ho qualche javascript che può apparire su molte pagine diverse. A volte queste pagine sono state accessibili tramite un URL contenente un riferimento di ancoraggio (# commento-100, ad esempio). In quei casi voglio che il javascript ritardi l'esecuzione fino a dopo che la finestra è saltata. In questo momento sto solo usando un ritardo, ma questo è piuttosto hacker e ovviamente non funziona in tutti i casi. Non riesco a trovare alcun tipo di evento DOM che corrisponda alla finestra "salta".Come posso sapere se una pagina è saltata all'ancora (#) in javascript?
A parte il semplice ritardo, l'unica soluzione che ho trovato è che JS cerchi l'ancora nell'URL e, se ne trova uno, controlla le modifiche in scrollTop. Ma sembra difettoso, e non sono sicuro al 100% che il mio script verrà sempre attivato prima che lo scorrimento avvenga, quindi verrà eseguito solo se l'utente scorrerà manualmente la pagina. Ad ogni modo, non mi piace molto la soluzione e preferirei qualcosa di più guidato dagli eventi. Eventuali suggerimenti?
Modifica per chiarire:
Non sto cercando di rilevare un cambiamento di hash. Prendiamo il seguente esempio:
- pagina index.php contiene un collegamento a post.php scatta # comment-1
- utente il link al post.php # comment-1
- post.php # comment- 1 carichi
- $ (document) incendi .ready
- Non molto tempo più tardi i rotoli del browser fino al # comment-1
sto cercando di rilevare in modo affidabile quando il passaggio 5 succede.
'$ (document) .ready()' incendi troppo presto? –
Sì, purtroppo lo fa. – Aaron