jQuery bug: IE leaks prevention causes content-loss when coming back.

jQuery bug: IE leaks prevention causes content-loss when coming back.


I found a bug in jQuery.
== Short summary ==
* Interactively (by mouse clicks) add content to a page
(with .after(content)).
* Go to another page (e.g. by following a link).
* Hit the back button to come back to the interactive page.
==> Note: The dynamic changes are lost!
This bug is caused by code that prevents memory leaks in IE: when I
remove three lines
from jQuery.js, the bug disappears.
== Example ==
* I have tested this with Firefox 3. I don't know whether it shows up
with other browsers.
==> If you have another browser, please check out the example below
and let me know the results!
* open this page: http://www.yaakovnet.net/jQueryBug1/bug.html
* as instructed, click on the text "Click here!" ==> a note (click)
should appear. You can click several times.
* now follow the link on the page .... and come back by using your
back button.
* Note: the dynamically added (click) notes are gone! This is the
bug!
== Localizing the problem ==
The bug is caused by the following lines in jquery.js:
// Prevent memory leaks in IE
// And prevent errors on refresh with events like mouseover in other
browsers
// Window isn't included so as not to unbind existing unload events
jQuery(window).bind("unload", function() {
jQuery("*").add(document).unbind();
});
I created a version jquery-modified.js where the last three lines are
commented out.
As you can see, using this modified version fixes our problem:
* Go to: http://www.yaakovnet.net/jQueryBug1/fixed.html
* Follow the instructions above.
==> Note: the dynamically added text does *not* disappear.
== Fixing the problem ==
Of course, disabling the three lines may cause memory leaks in IE.
* Maybe the call jQuery("*").add(document).unbind() is too general?
Leaving some selected events bound
may solve our problem without introducing (too many) IE leaks.
* Alternatively --- we should all switch to Firefox. Note: FF 3 is
released --- download it NOW!