2012-03-30 9 views
0

abrufen Hier ist mein Code:Javascript Geschichte kann nicht Wert in onpopstate

function pushState() { 

    ...snip... (SelectedMenuID has a value of 8) 

    var stateObj = { selectedMenu: SelectedMenuID }; 
    history.pushState(stateObj, "The title to use", path); 
} 

window.onpopstate = function(event) { 
    if (event.state != null) { 
     alert(event.state.selectedMenu); 
    } 
}; 

Ein paar Probleme:

  • Klick auf jeder Seite durch aktualisiert die Navigationsleiste URL in Ordnung, aber nicht aktualisiert die Titel the title to use wie ich es
  • Drücken zurück erwarten schafft es den Alarm aber der Wert ist undefined und nicht 8 wie ich erwarten würde
+0

Das "title" Argument zu '.pushState()' wird von Firefox ignoriert, vielleicht auch andere Browser. – Pointy

+0

'event.state.selectedMenu' funktioniert in Chrome gut für mich – Esailija

+0

@Pointy Ich verwende Chrome und erwarte, dass es so funktioniert, wie der Chrome Webstore funktioniert https://chrome.google.com/webstore/category/app/8 -Bildung –

Antwort

3
  1. Nach https://github.com/browserstate/history.js/wiki/The-State-of-the-HTML5-History-API gibt es keinen Browser, der zur Zeit den Titel der Seite auf den Wert in pushState() Basis aktualisiert. Persönlich denke ich, dass dies das richtige Verhalten ist - der Seitentitel sollte das <title> Element im Seitenkopf widerspiegeln.

  2. Wenn Sie pushState() aufrufen und dann mit der Zurück-Taste zurück zum letzten pushState (das ist eigentlich der aktuelle Zustand) gehen, aber zum vorherigen Zustand. In Ihrem Fall klingt es so, als würden Sie den Status beim Laden der Seite sehen, weshalb selectedMenu nicht definiert ist. Übrigens, es ist nur Chrome, die onpopstate feuert, um die anfängliche Seitenladung zu vergleichen, also würde ich in anderen Browsern nicht erwarten, die Warnung zu sehen.