Javascript 如何保存/缓存dom,以便在按下后退按钮时页面按原样加载?

Javascript 如何保存/缓存dom,以便在按下后退按钮时页面按原样加载?,javascript,ajax,dom,web-deployment,bfcache,Javascript,Ajax,Dom,Web Deployment,Bfcache,我使用ajax调用将模型添加到我的js应用程序模型集合中。当我点击一个模型并转到下一页时,我希望当我点击后退按钮时,我加载的所有模型仍然在那里。为了让它在所有浏览器上都能工作,最好的方法是什么?这是针对移动网络的。我找不到一个直截了当的答案,我该如何使用bfcache或js history,或者还有其他更好的方法吗?您可以将它们存储在本地存储中,只有在本地存储中不存在的情况下才可以使用ajax 因此,不要使用常规的$.ajax,而是将其用于要缓存的ajax: function storageBa

我使用ajax调用将模型添加到我的js应用程序模型集合中。当我点击一个模型并转到下一页时,我希望当我点击后退按钮时,我加载的所有模型仍然在那里。为了让它在所有浏览器上都能工作,最好的方法是什么?这是针对移动网络的。我找不到一个直截了当的答案,我该如何使用bfcache或js history,或者还有其他更好的方法吗?

您可以将它们存储在本地存储中,只有在本地存储中不存在的情况下才可以使用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

因此,不要使用常规的$.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移动网络用户