Wie kann ich feststellen, ob eine Seite in Javascript zum Anker (#) gesprungen ist?

Ich habe Javascript, das auf vielen verschiedenen Seiten erscheinen kann. Manchmal wurde auf diese Seiten über eine URL zugegriffen, die eine Ankerreferenz enthielt (z. B. # comment-100). In diesen Fällen möchte ich, dass das Javascript die Ausführung verzögert, bis das Fenster gesprungen ist. Im Moment benutze ich nur eine Verzögerung, aber das ist ziemlich hackisch und funktioniert offensichtlich nicht in allen Fällen. Ich kann anscheinend kein DOM-Ereignis finden, das dem Fenster "jump" entspricht.

Abgesehen von der einfachen Verzögerung ist die einzige Lösung, die ich gefunden habe, dass der JS nach dem Anker in der URL sucht und, falls er einen findet, nach Änderungen in scrollTop Ausschau hält. Aber das scheint fehlerhaft zu sein, und ich bin nicht 100% sicher, dass mein Skript immer gestartet wird, bevor der Bildlauf ausgeführt wird, sodass es nur ausgeführt wird, wenn der Benutzer manuell einen Bildlauf durch die Seite durchführt. Jedenfalls mag ich die Lösung nicht wirklich und würde etwas ereignisgesteuerteres bevorzugen. Irgendwelche Vorschläge

Bearbeiten, um zu klären:

Ich versuche nicht, eine Hash-Änderung zu erkennen. Nehmen Sie das folgende Beispiel:

Page index.php enthält einen Link zu post.php # comment-1User klickt auf den Link zu post.php # comment-1 post.php # comment-1 lädt $ (document) .ready firesNicht lange später scrollt der Browser nach unten zu # comment-1

Ich versuche zuverlässig zu erkennen, wann Schritt 5 passiert.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage