Ich benutze, Angular.js 1.3, mit UI-Router. Ich habe 3 Seiten, page1.html, page2.html, page3.html.
Wenn der Benutzer auf Seite1 klickt, wird Seite2 geöffnet, aber ich möchte den Bildlaufstatus von Seite 1 speichern, wo der Benutzer vor dem Klicken war, so dass er nach dem Klicken auf die Zurück-Schaltfläche auf denselben Bildlaufstatus landet.
Um dies zu lösen ich die page2.html über die page1.html, in iframe geöffnet, und es absolute Position geben die page1.html anzuzeigen vorbei, und ich bin mit dem:
history.pushState({}, '', '/page2.html');
um die URL zu ändern. Diese Implementierung funktioniert gut.
Nun, wenn der Benutzer auf den Link auf page2.html klicken, sollte es die page3.html öffnen, wie ein normaler Link, für die ich verwendet:
$state.go("page3")
Das Problem ist jetzt der Staat chages und page3 .html lädt, aber URL ist immer noch die /page2.html, URL ändert sich nicht.
Ich habe sogar versucht:
history.pushState({}, '', '/page3.html');
Noch URL ändert sich nicht. Jeder weiß, warum es passiert.
Ich bin mir nicht sicher, dass das funktioniert.aber ich denke, du bist in "Iframe", deshalb ändert er diese URL nicht. kannst du eval versuchen, wenn du auf page2 bist. kann 'parent.eval ($ state.go (" page3 "))' so etwas sein. –
Können Sie ein JSFiddle veröffentlichen? –
Tut mir leid, ich kann es nicht auf jsfiddle posten. Aber ja, ich kann verstehen, dass der Link in iframe ist, deshalb ändert er die URL (wahrscheinlich) nicht. Aber der js-Code läuft gut, history.pushState läuft (Js source debugger), hat aber keine Auswirkungen auf die URL. Werde mehr über iframe erfahren. –