Dlaczego obiekt goog.history.Html5History wywołuje zdarzenie goog.history.EventType.NAVIGATE dwukrotnie za każdym razem, gdy fragment jest zmieniany? To jest przykład kodu:Zamknięcie Google - Html5History wywołuje zdarzenie NAVIGATE dwa razy:
var history = goog.history.Html5History.isSupported()
? new goog.history.Html5History()
: new goog.History();
goog.events.listen(history, goog.history.EventType.NAVIGATE, function(e) {
console.log(['navigation', e.target.getToken()]);
});
history.setEnabled(true);
I to jest log:
["navigation", "!/properties/new"]
["navigation", "!/properties/new"]
UPD: Kiedy zorientowali się, że są dwie różne wartości isNavigation
dziedzinie e
obiektu w zwrotnego. Pierwszy raz zajmuje wartość false
, a po raz drugi przyjmuje wartość true
. isNavigation
oznacza:
isNavigation Prawda jeśli zdarzenie zostało wywołane przez działanie przeglądarki, takie jak do przodu lub do tyłu, klikając na link, edytując URL lub dzwoniąc window.history (przejdź | powrót | do przodu.). Fałsz, jeśli token został zmieniony przez wywołanie setToken lub replaceToken.
Ale jak uzyskać tylko jeden nawet zwolniony?
Tutaj można znaleźć prosty patch: http://code.google.com/p/closure-library/issues/detail?id=449 To usunięcie wiązania Html5History do popstate zdarzenie przeglądarki. –