Alx*_*ndr 23 safari cache-control
截至最近的safari 5已经发布,结果导致我的网站出现了一些问题.我有一个运行经典ASP的动态网站(虽然这应该不重要),并且该网站对历史堆栈有一些创造性的使用.例如,您可以在列出产品的页面上,然后转到有关产品的详细信息并更改产品(admin-view).单击产品上的"保存"时,信息将通过AJAX发送到服务器,并history.back()发出a.这适用于所有浏览器(包括safari <= 4),但是,在新发布的Safari 5中它停止工作.似乎当您在safari 5中单击它实际上并不刷新页面时,它只会从缓存中加载它,这意味着不会显示在详细信息视图中所做的更改.我怎样才能在safari 5中进行这项工作呢?这是我必须关闭缓存的当前代码(包含在每个页面的顶部):
Dim pStr
pStr = "private, no-cache, no-store, must-revalidate"
Response.AddHeader "pragma","no-cache" '?
Response.AddHeader "cache-control", pStr '? Er ikke sikker på om disse 3 siste er nødvendige.
Response.AddHeader "cache-control", "post-check=0, pre-check=0" '? Er ikke sikker på om disse 3 siste er nødvendige.
Response.AddHeader "Expires", "Mon, 26 Jul 1997 05:00:00 GMT" '?
Response.AddHeader "Last-Modified", Now()
Run Code Online (Sandbox Code Playgroud)
Mik*_*ola 46
空unload处理程序将不再起作用.相反,您可以检查事件的persisted属性onpageshow.初始页面加载时设置为false.从bfcache加载页面时,它设置为true.
Kludgish解决方案是在从bfcache加载页面时强制重新加载.
window.onpageshow = function(event) {
if (event.persisted) {
window.location.reload()
}
};
Run Code Online (Sandbox Code Playgroud)
如果您正在使用jQuery,那么:
$(window).bind("pageshow", function(event) {
if (event.originalEvent.persisted) {
window.location.reload()
}
});
Run Code Online (Sandbox Code Playgroud)
经过一些蠢事和挖掘后,我找到了一个解决方案,虽然我对此并不太满意.onunload=""body标记中的设置会导致Safari使页面无效并重新加载它window.history.back();.
| 归档时间: |
|
| 查看次数: |
17067 次 |
| 最近记录: |