有没有人通过JavaScript知道我可以清除Safari的bfcache,还是强制它重新加载而不是使用页面的缓存版本?
我有一个正在运行测试的Web应用程序,并且有一个监视倒计时(超时)的JavaScript:
timeoutId = window.setInterval(function () {
timeoutRemaining--;
if (timeoutRemaining <= 0) {
location.href = myTimeoutLocation;
}
}, timeoutInterval);
这一切都正常,直到我进入myTimeoutLocation。行为是,如果用户单击后退按钮,测试应该继续。但是,在导航回来时,我发现IE和Chrome重新加载页面,但Firefox和Safari正在显示缓存页面。我需要确保永远不会显示缓存页面。我可以通过添加:
来解决Firefox中的这个问题window.onunload = function () { };
到我的脚本,但自Safari 5.x以来在Safari中没有用(据我所知)。我找到了另一个解决方案:
window.addEventListener("pageshow", function(evt){
if(evt.persisted){
setTimeout(function(){
window.location.reload();
},10);
}
}, false);
这在一定程度上起作用......我现在遇到的问题是,即使使用上面的代码,我也会收到一个对话框:...我显然不允许嵌入。对话框显示,为了显示页面,必须使用相应的确认或拒绝按钮将信息发送到服务器。我确实尝试将forceGet设置为true,但这并没有解决出现对话框的问题。我应该提一下,点击重新发送会产生预期的效果。
是的,我意识到图像是Firefox,而不是Safari。
如果它有任何不同(即使这是一个JavaScript问题),该网站使用.NET / MVC4编码并托管在IIS中。
提前感谢您提供正确方向的任何帮助/想法/信息/指示。