Skip to main content

Bug Tracker

Side navigation

#3055 closed bug (duplicate)

Opened June 17, 2008 02:07PM UTC

Closed August 06, 2008 10:02PM UTC

IE leak prevention causes content loss

Reported by: yaakov Owned by:
Priority: minor Milestone: 1.3
Component: event Version: 1.2.6
Keywords: IE memory leak; back button Cc:
Blocked by: Blocking:
Description

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

Note: all example code is attached to this bug report.

But you can also look at the live examples on the web.

  • I have tested this with Firefox 3. I don't know whether it shows up with other browsers.
  • 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:

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.
Attachments (4)
  • bug.html (0.4 KB) - added by yaakov June 17, 2008 02:07PM UTC.

    html for the bug

  • fixed.html (0.4 KB) - added by yaakov June 17, 2008 02:08PM UTC.

    html using jquery-modified.js --- show test without the bug

  • go-back.html (0.1 KB) - added by yaakov June 17, 2008 02:09PM UTC.

    a plain html page referenced by the html examples

  • jquery-modified.js (97.9 KB) - added by yaakov June 17, 2008 02:09PM UTC.

    jquery.js with three lines disabled --- this removes the bug.

Change History (2)

Changed June 17, 2008 07:39PM UTC by flesler comment:1

component: coreevent
priority: majorminor

This removal won't be taken out. It's very common to remove all the bindings on window unload, so it's expected that a back action will face these problems.

Still, I'll leave this open for now.

Changed August 06, 2008 10:02PM UTC by flesler comment:2

resolution: → duplicate
status: newclosed

1.3 will do this much faster, that should be enough.

If the problem persist, do reopen or file a new ticket.