Javascript 如何保存/缓存dom,以便在按下后退按钮时页面按原样加载?
我使用ajax调用将模型添加到我的js应用程序模型集合中。当我点击一个模型并转到下一页时,我希望当我点击后退按钮时,我加载的所有模型仍然在那里。为了让它在所有浏览器上都能工作,最好的方法是什么?这是针对移动网络的。我找不到一个直截了当的答案,我该如何使用bfcache或js history,或者还有其他更好的方法吗?您可以将它们存储在本地存储中,只有在本地存储中不存在的情况下才可以使用ajax 因此,不要使用常规的$.ajax,而是将其用于要缓存的ajax:Javascript 如何保存/缓存dom,以便在按下后退按钮时页面按原样加载?,javascript,ajax,dom,web-deployment,bfcache,Javascript,Ajax,Dom,Web Deployment,Bfcache,我使用ajax调用将模型添加到我的js应用程序模型集合中。当我点击一个模型并转到下一页时,我希望当我点击后退按钮时,我加载的所有模型仍然在那里。为了让它在所有浏览器上都能工作,最好的方法是什么?这是针对移动网络的。我找不到一个直截了当的答案,我该如何使用bfcache或js history,或者还有其他更好的方法吗?您可以将它们存储在本地存储中,只有在本地存储中不存在的情况下才可以使用ajax 因此,不要使用常规的$.ajax,而是将其用于要缓存的ajax: function storageBa
function storageBasedAjax(url,cb){
if (localStorage.getItem("myAxaxCache_"+url)){
cb(localStorage.getItem("myAxaxCache_"+url));
return;
}
$.ajax({url: url, success: function(result){
localStorage.setItem("myAxaxCache_"+url,result);
cb(result);
}});
}
请记住,您不希望过载,因此,如果您有一个url,其中的参数会更改每次调用,请不要使用此url,否则您将使本地存储过载,您可以将它们存储在本地存储中,并且仅当本地存储中不存在参数时,才为它们存储ajax 因此,不要使用常规的$.ajax,而是将其用于要缓存的ajax:
function storageBasedAjax(url,cb){
if (localStorage.getItem("myAxaxCache_"+url)){
cb(localStorage.getItem("myAxaxCache_"+url));
return;
}
$.ajax({url: url, success: function(result){
localStorage.setItem("myAxaxCache_"+url,result);
cb(result);
}});
}
请记住,您不想过载,因此如果您有一个url,其中的参数会改变每次调用,请不要使用此url,否则您将过载本地存储我很确定,默认情况下使用“后退”按钮时,浏览器不会保存Ajax内容。它会以现金形式保存,与后退按钮无关。浏览器当前未在上的mobile safari上保存任何内容ios@PatO“基夫,我说可以。无论如何,我的主要解决方案是本地存储,这是一个很好的解决方案。将dom保存到本地存储的最佳方法是什么@Oz我没有关闭voteI我很确定浏览器在默认情况下使用back按钮时不会保存Ajax内容。它会以现金形式保存内容,与back按钮无关。浏览器目前不会在mobile safari上保存任何内容ios@PatO“基夫,我说可以。无论如何,我的主要解决方案是本地存储,这是一个很好的解决方案。将dom保存到本地存储的最佳方法是什么@O_Z我没有关闭voteAt,至少firefox实际上恢复了页面的逐字(DOM和javascript状态),如果它仍然在bfcache中,除非它被某些事件处理程序抑制了。我不认为任何人会在移动设备上使用FF,为了在safari和chrome上实现这一点(主要针对ios和android移动web用户),firefox至少会在页面仍在bfcache中的情况下,逐字恢复页面(DOM和javascript状态),除非某些事件处理程序禁止了这一点。不过,我认为没有人会在移动设备上使用FF,试图让它在safari和chrome上运行,主要面向ios和android移动网络用户