Sto usando, Angular.js 1.3, con ui-router. Ho 3 pagine, pagina1.html, pagina2.html, pagina3.html.
Quando l'utente fa clic sulla pagina 1, la pagina 2 si aprirà, ma voglio salvare lo stato di scorrimento della pagina 1, in cui l'utente era prima di fare clic, in modo che dopo aver fatto clic sul pulsante Indietro atterra sullo stesso stato di scorrimento.
per risolvere questo ho aperto il page2.html sul page1.html, in iframe, e dandogli posizione assoluta per visualizzare il page1.html, e sto usando la:
history.pushState({}, '', '/page2.html');
per cambiare l'URL. Questa implementazione funziona bene.
Ora quando l'utente clicca sul link page2.html, dovrebbe aprire la page3.html, come un normale link, per il quale ho usato:
$state.go("page3")
Il problema è ora il chages statali, e pagina3 .html carica, ma url è ancora il /page2.html, l'URL non sta cambiando.
Ho anche provato:
history.pushState({}, '', '/page3.html');
Ancora url non cambia. Qualcuno sa perché sta succedendo.
Non sono sicuro che funzionerà.ma immagino che tu sia in 'Iframe', ecco perché non sta cambiando questo URL. puoi provare 'eval' quando sei in pagina2. potrebbe essere 'parent.eval ($ state.go (" pagina3 "))' qualcosa come questo. –
Puoi pubblicare un JSFiddle? –
Mi spiace non posso postarlo su jsfiddle. Ma sì, posso capire che il link è in iframe, ecco perché non sta cambiando url (probabilmente). Ma il codice js funziona bene, history.pushState è in esecuzione (Js source debugger), ma non ha alcun effetto sull'URL. Scava di più su iframe. –