How do I preserve dom state in the browser history after dynamic dom manipulation?

霸气de小男生 提交于 2019-12-06 21:51:06

问题


Is there a general purpose solution for preserving dom state so that when a user returns to a page by using back/forward, the whole page is in the exact state that they left it?

This post asks and answers why the behavior is inconsistent with different browsers and different javascript libraries...

Ajax, back button and DOM updates

...but I am curious if anyone has a general solution to this problem that doesn't require reloading the page.


回答1:


I'm afraid there isn't, and there really can't be because we're talking about browser behavior that's completely discretionary and not standards-defined. You could use Ajax to aggressively synchronize relevant DOM state to a session on a server, and always restore from that state on page load, but that will preserve the most recent state for that page, not the state that was necessarily present at a given desired point in the browser history.




回答2:


You can use this cache busting technique in rails to make it work in modern browsers (chrome, ie8+, ff 3.5+). This worked for me on my last project when we had ajax update the dom and had to navigate back and have the ajax updates persist.

response.headers["Cache-Control"] = "no-cache, no-store, max-age=0, must-revalidate"
response.headers["Pragma"] = "no-cache"
response.headers["Expires"] = "Fri, 01 Jan 1990 00:00:00 GMT"


来源:https://stackoverflow.com/questions/1573277/how-do-i-preserve-dom-state-in-the-browser-history-after-dynamic-dom-manipulatio

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!