2016-07-11 15 views
0

Ich versuche ein Ereignis auszulösen, wenn sich der Hash innerhalb meiner URL mit der Methode onhashchange ändert. Ich rufe es an, aber es scheint nie ausgeführt zu werden.Wie löst man ein Ereignis aus, wenn sich der Hash-Speicherort ändert

Ich habe Folgendes versucht.

$(function() { 
    window.addEventListener("onhashchange", function() { 
     alert("Here"); 
    }); 

    window.onhashchange = function() { 
     alert("Changed"); 
    } 
)}; 

Gibt es einen Grund, warum diese Funktionen nicht aufgerufen werden?

+2

Wenn Sie 'addEventListener' verwenden, fügen Sie am Anfang des Ereignisnamens nicht 'on' ein. – Barmar

+0

http://StackOverflow.com/Questions/3090478/JQuery-Hashchange-Event –

Antwort

2

Sie sollten 'Hashchange' anstelle von 'onhashchange' in Ihrem ersten Beispiel schreiben.

Dieser Code funktioniert für mich, zumindest in Chrome fein:

window.addEventListener('hashchange', function(e){ 
    console.log('changed'); 
}) 

Hier kurzen Code-Schnipsel ist: https://jsfiddle.net/bm8jjwmq/

+0

Ich denke, dass, wenn es eine gute Lösung zu sein könnte http://jsbin.com/relumuzimu/edit?html,js,output – Blind

0
if ("onhashchange" in window) { 
    alert("The browser supports the hashchange event!"); 
} 

▲ Für Support // ▼ Umsetzung

function locationHashChanged() { 
    if (location.hash === "#somecoolfeature") { 
     somecoolfeature(); 
    } 
} 

window.onhashchange = locationHashChanged; 

Quelle: https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onhashchange

+0

Es sollte ein Kommentar sein – Blind

+0

Um OP? Ich habe nicht genug Reputation, um zu kommentieren. Entschuldigung für die falsche Stelle. – radiantstatic