Sposób pushState przyjmuje obiekt state
jak pierwszy argument dokąd przechodzącej w null
:
przykładzie pushState() w
var stateObj = {bla: "bar"} ;
history.pushState (stateObj, "strona 2", "bar.html");
Dla przykładu:
//object goes in first argument
history.pushState({ html: $('body').html() }, "Title of Page", "Url to update address bar");
//On PopState, you have access to event.state
window.addEventListener('popstate', function(event) {
var priorStateObj = event.state;
console.log(priorStateObj.html);
}
Co dotyczy mnie jest to, że wydają się wtedy chcą potencjalnie document.write()
że HTML z powrotem do strony? Jeśli tak, starałbym się tego uniknąć, jak wyjaśniono w tym wątku SO: Why is document.write considered a "bad practice"?
O ile zapisywanie całego HTML ciała, to jest trudne. W Firefoksie na przykład obowiązuje limit 640 kilobitów. Jeśli Twój HTML może potencjalnie przekroczyć tę kwotę (prawdopodobnie), będziesz chciał po prostu zapisać informacje, których możesz użyć do odtworzenia tego, czego potrzebujesz. Spróbuj zapisać Object
za pomocą informacji potrzebnych do wypełnienia strony przy użyciu JavaScript/jQuery/etc.
Obiekt stanu może być wszystkim, co można serializować. Ponieważ Firefox zapisuje obiekty stanu na dysku użytkownika, aby można je było przywrócić po odtworzeniu przeglądarki przez użytkownika, narzucamy limit wielkości wynoszący 640 tys. znaków na zserializowanej reprezentacji obiektu stanu. Jeśli przekażesz obiekt stanu, którego przekształcona do postaci szeregowej jest większa niż , to pushState(), metoda wyrzuci wyjątek. Jeśli potrzebujesz więcej miejsca niż to, zachęcamy do korzystania z sessionStorage i/lub localStorage.
Dużo więcej dobrych informacji tutaj:
https://developer.mozilla.org/en-US/docs/Web/API/History_API
"* Coś takiego *" - tak to nie działa? – Bergi