为什么Firefox 5.0.1在按下后退按钮时不刷新此页面?
<html>
<head>
<meta http-equiv="cache-control" content="no-cache">
<script src="http://code.jquery.com/jquery-1.6.2.min.js" type="text/javascript"></script>
<script>
$(document).ready(function() { alert('ready'); });
$(window).load(function() { alert('load'); });
</script>
</head>
<body>
<form action="http://www.google.com" method="get">
<input name="q" type="text">
<input type="submit">
</form>
</body>
</html>
重现的步骤:
更新
这将强制firefox重新加载页面:
$(window).unload(function() {});
但是,我最终使用了这个:
window.addEventListener('pageshow', function() {alert('pageshow'); }, false);
答案 0 :(得分:9)
为什么Firefox 5.0.1在按下后退按钮时不刷新此页面?
因为它不需要。
当你在Firefox中“返回”并且Firefox可以完全从后面的按钮缓冲区加载页面时,那么你要回到的不是一个新的页面,而是你之前留下的确切状态的页面如果之间没有发生任何事情,那就包括所有Javascript代码和变量的状态。就你的脚本(和jQuery)而言,ready()已经被触发了。如果它已被解雇,jQuery将不会再次触发它。
你可能想要的是listen to the 'pageshow' event,当从缓冲区重新加载页面时Firefox会触发,即使它的状态被完全保留。
答案 1 :(得分:1)
请参阅Ajax, back button and DOM updates和Restore object classes on back button in Firefox,了解Firefox的页面缓存,它存储整个页面状态,并且在大多数情况下不会触发加载事件。如果你想避免让Firefox保存你的页面状态(这取决于你在页面中的状态),看起来你可以通过注册页面的卸载事件来跳过它。因为卸载事件可能使页面状态无效,所以如果你有一个页面状态,Firefox不会缓存页面状态,后退按钮会在后退按钮上新加载页面,所有正常加载事件都会触发。