开发者

Why does Firefox 5 ignore document.ready?

开发者 https://www.devze.com 2023-03-22 11:15 出处:网络
Why does Firefox 5.0.1 not refresh this page when the back button is pressed? <html> <head>

Why does Firefox 5.0.1 not refresh this page when the back button is pressed?

<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"></开发者_Python百科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>

Steps to reproduce:

  1. Click "Submit Button"
  2. Press Back
  3. Neither document.ready or window.load fires

Update:

This will to force firefox to reload the page:

$(window).unload(function() {});

But, I ended up using this:

window.addEventListener('pageshow', function() {alert('pageshow'); }, false);


Why does Firefox 5.0.1 not refresh this page when the back button is pressed?

Because it doesn't need to.

When you go "back" in Firefox and Firefox can load the page entirely from the back button buffer, then what you are going back to is not to a fresh page but to the page in the exact state you left it before as if nothing had happened in between, and that includes the state of all your Javascript code and variables. As far as your script (and jQuery) is concerned, ready() has already fired. jQuery will not fire it a second time if it's already fired.

What you probably want is to listen to the 'pageshow' event, which Firefox fires when the page is re-loaded from the buffer, even if its state is fully preserved.


See Ajax, back button and DOM updates and Restore object classes on back button in Firefox about Firefox's page cache that stores the entire state of the page and does not fire load events in most cases. If you want to avoid having Firefox save your page state (which depends upon what kind of state you have in the page), it looks like you can get it to skip it by registering an unload event for the page. Because an unload event could invalidate the page state, Firefox doesn't cache the page state if you have one and the back button will load the page freshly on the back button and all normal load events will fire.

0

精彩评论

暂无评论...
验证码 换一张
取 消