缓存页面上的就绪事件?

Sam*_*tia 5 jquery

我想在浏览器中显示页面时触发一些代码:

$(function() {
   console.log('got ready event!');
});
Run Code Online (Sandbox Code Playgroud)

仅当浏览器下载页面时才会触发此事件。如果我导航到不同的页面,然后返回,则不会触发上面的代码片段。浏览器似乎缓存了页面状态,因为页面显示时服务器没有收到任何请求。因此,当我返回页面时,它会恢复缓存的页面状态而不触发ready事件。

是否有一个事件我可以在页面显示时监听,无论页面是否被缓存?

小智 5

我知道这是一个老案例,但我也曾为此苦苦挣扎。“pageshow”可以完成这项工作,但似乎您必须将此事件绑定到窗口而不是文档。因此,代码必须如下所示:

$(window).on('pageshow', function(){ alert('page show'); });
Run Code Online (Sandbox Code Playgroud)


und*_*ned 3

该指令cashe-control:no-cashe指示不应使用缓存的信息,而应将请求转发到源服务器。

<meta http-equiv="cashe-control" content="no-cashe">
Run Code Online (Sandbox Code Playgroud)

尝试一下pageshow活动:

该事件的工作方式与 load 事件相同,只是每次加载页面时都会触发该事件。第一次加载页面时, pageshow 事件在 load 事件触发后立即触发。pageshow 事件使用名为 persisted 的布尔属性,该属性在初始加载时设置为 false。如果不是初始加载则设置为true(换句话说,当页面被缓存时设置为true)。

$(document).bind('pageshow', function(){
   // ...
})
Run Code Online (Sandbox Code Playgroud)

  • 您的意思是“&lt;meta http-equiv="cache-control" content="no-cache"&gt;”吗?在你的例子中它写的是“cash”。 (4认同)
  • `$(document).bind('pageshow', function() { ... })` 不起作用,但 `window.onpageshow = function() { ... }` 在 Chrome 和 FF 上起作用。 (2认同)