浏览器返回上一页功能,如果返回如何重新加载文档

Browser go back to previous page function, how to reload a document if go back?

本文关键字:何重新 加载 文档 返回 如果 返回上一页 功能 浏览器      更新时间:2023-09-26

这是我对浏览器内置返回功能的问题。

假设我有两页:第 1 页和第 2 页。

Page1 所做的是下载一个 .json 文件,然后在网页上打印 .json 文件的数据。

Page2允许用户将新数据插入该.json文件。

如果用户点击页面 1,然后转到页面 2 插入新数据,然后点击返回按钮。.json 文件不会更新。因此,刚刚插入的数据不会显示。

但是我需要更新新数据。

有什么想法可以解决这个问题吗?

如果缓存是您的问题,那么您可能需要考虑这个有缺陷的老栗子。将这些添加到您的<head>部分,但要小心,因为它的有效性因浏览器/版本而异。有关深入的详细信息,请参阅 w3.org 链接。

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />

https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9

我假设您使用javascript和onload事件来下载.json文件并显示其内容。问题是当您使用后退按钮时不会触发 onload 事件。您可以尝试使用 window.onpopstate 事件而不是 onload。当使用后退按钮导航到网页时,也会调用 onpopstate 事件。

function init() {
   //load .json ...
}   
window.onpopstate = init;
可能是

json 数据正在被缓存,因此即使您在到达"Page1"时再次请求它,您也可能正在读取它的缓存版本。也就是说,如果您已成功避免缓存页面本身,则仍然可以缓存数据。

克服此类问题的一种简单但笨拙的方法是在每次加载 json 数据时更改 URL 的 URL。 例如,在URL中添加时间戳或其他一些理想情况下唯一的部分:

myjson.json?timestamp=xxx