Ankeränderungen

Des öfteren kommt es vor das man anhand des Ankers auch in JavaScript bestimmte Aktionen setzen will, vor allem um z.B. Permalinks zu bieten oder Suchergebnisse, anhand des Links weiter geben zu können.

Nach kurzer Suche bin ich über folgenden Eintrag in Stackoverflow gestoßen http://stackoverflow.com/questions/2161906/handle-url-anchor-change-event-in-js


if ("onhashchange" in window) { // event supported?
    window.onhashchange = function () {
        hashChanged(window.location.hash);
    }
}
else { // event not supported:
    var storedHash = window.location.hash;
    window.setInterval(function () {
        if (window.location.hash != storedHash) {
            storedHash = window.location.hash;
            hashChanged(storedHash);
        }
    }, 100);
}

Da in den neueren Browsern das event bereits unterstützt wird, kann hier auf die übliche Art eine Callbackfunction gelegt werden, für ältere Browser geht der Umweg über eine Variable als Sicherung und der Prüfung auf Zeit ob sich der Hash geändert hat.

Zusätzlich zu den Änderungen will man auch oft den Hashwert nach Seitenaufbau (z.B. $(document).ready(function(){…}); ) wissen, hierzu kann einfach nach Seitenaufbau wieder das window Objekt hergenommen werden


 if(window.location.hash != null && window.location.hash != undefined && window.location.hash != ""){
        hashChanged(window.location.hash);
 }

Scroll to top