我有一些页面,其中包括表格,其中包含删除,每行更新等选项,之后我选择了像更新这样的选项使用Ajax 调用。
我的问题是,当我转到另一个页面然后返回时,使用浏览器上的后退按钮,DOM上的那些更改不存在。似乎浏览器只缓存了主题页面加载。
我在堆栈上遇到了问题,这似乎是关于我正在寻找的东西: Keep changes on DOM when pressing back/forward buttons
有人回答说:
“如果您真的在改变页面,那么即使从缓存中工作,浏览器也会显示从服务器检索到的页面,而不是之后修改的页面。”
如果您希望以当前的方式保持页面A / Page B结构,而不是交换到更多SPA方法,则可以将ajax结果存储在sessionStorage中并在页面加载时检查它。如果在那里,重新申请;如果没有,请通过ajax请求并应用它(并保存)。这比通过网络重新请求它要快得多。“
这真的是解决方案吗? 如果是的话,我该如何实现类似的东西?
修改
举一个具体的例子,我使用了这样的代码:
GetTargetUpdated : function (options, targetToUpdate) {
$.ajax(options).done(function (result) {
var target = $(targetToUpdate);
var $newHtml = $(result);
target.replaceWith($newHtml);
$newHtml.effect("highlight");
});
},
将更新特定的DOM元素。我希望这些更改能够覆盖浏览器中页面的缓存
编辑:似乎我在Chrome上遇到此问题但在Firefox上没有。如何解决Chrome中的缓存问题(我发现问题的浏览器)? 是否有一些标头可以在Html中使用,一些jquery解决方案或其他一些方法来保存缓存页面中的DOM更改?
由于