[jQuery] Need some help with random IE crashes
http://67.199.33.151/db/
We've been working on this site for a month, using jquery extensively to
create a sort of templating system for views into a sql database via a
web service. AJAX calls are made on loading of the page to populate
various templates and lists.
It's been working very nicely in firefox, and even Safari after some
funkiness, but recently we've started to see IE crash randomly. This
behavior is entirely reproducible and seems to occur around the setup /
teardown of a bastardized version of thickbox I hacked together.
If you hit the URL included above you'll see the layout with our data
starred out at the webservice layer.
All our custom code is at /db/a/js/dci.js. The ThickBox, Find,
EditEntity and EditValues sections are where a lot of the action seems
to be for this issue. The rest of the code goes through the page and
finds all divs with ".subtableTemplate" and ".valuesList" and generates
webservice calls for each one. The webservice calls return json that
describe db objects; this gets parsed out to create DOM entries for each
type of list.
Now, if I comment out various parts of the json-to-DOM code, the IE
crashing behaviour subsides. Also, sometimes I'll be able to run the
page for a while before the crash occurs. It *always* occurs around one
of the following actions:
- click on the Find button on the top row of links; the find screen
(thickbox) appears. Click Cancel. This should hangs it.
- similar behaviour with Edit and Add links, which also use ThickBox to
show edit panels. Sometimes this will hang with the edit panels open;
sometimes when the panels have been shut.
I'm at my wits end, frustrated and over budget. I've been reading a lot
about memory management and the like, and using Sieve and other tools to
watch for leaks, which I don't see.
One thing I *do* notice, using Sieve, is that when I create a thickbox,
then remove it, the objects stick around in IE's memory with references
still too them. I'm not sure if this is because of jQuery but in Sieve
i'll see 8 objects get created (with the Thickbox) then 1 removed (the
TB_HideSelect iframe hack, interestingly).
Is there some way to ensure the complete removal of these "orphan" DOM
objects after a thickbox instantiation?
Otherwise - is there anything else I can look at doing to make this
consumable by IE? it's gonna kill us to rewrite it in a more
conventional way; we've invested a lot in getting to where we are and
I'm hoping I'm missing something obvious.
Thanks, everyone, for any suggestions you can give!
elijah