动态 dom 操作后,如何在浏览器历史记录中保留 dom 状态?

发布于 08-07 16:53 字数 285 浏览 6 评论 0原文

是否有一个通用的解决方案来保留 dom 状态,以便当用户使用后退/前进返回页面时,整个页面处于他们离开时的确切状态?

这篇文章询问并回答了为什么不同浏览器和不同 javascript 库的行为不一致...

Ajax、后退按钮和 DOM 更新

...但我很好奇是否有人有一个不需要重新加载页面的通用解决方案来解决这个问题。

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.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

つ低調成傷2024-08-14 16:53:06

恐怕不存在,而且确实不可能存在,因为我们正在谈论完全自由裁量的浏览器行为,而不是标准定义的行为。您可以使用 Ajax 积极地将相关 DOM 状态同步到服务器上的会话,并始终在页面加载时从该状态恢复,但这将保留该页面的最新状态,而不是之前的状态。必然存在于浏览器历史记录中的给定所需点。

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.

小清晰的声音2024-08-14 16:53:06

您可以在 Rails 中使用这种缓存清除技术,使其在现代浏览器(chrome、ie8+、ff 3.5+)中工作。这在我的上一个项目中对我有用,当时我们使用 ajax 更新 dom,并且必须返回并保持 ajax 更新。

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"

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"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文