Object getElementsByTagName IE7 Bug
So here's a fun bug to keep you entertained this weekend. Personally, this is the first purely-JavaScript bug that I've seen in IE7 (More due to the lack of anything changing than the quality of the code.)
Summary:
When accessing the .all or .getElementsByTagName("*") properties on the DOM representation of an <object> element, the resulting NodeSet will always be empty.
Proof of Concept:
HTML:
JavaScript:
// => <object/>
obj.all
// => []
obj.getElementsByTagName("*")
// => []
obj.getElementsByTagName("param")
// => [ <param/>, <param/>, <param/> ]
obj.firstChild
// => <param/>
Andrea has done some fantastic work in tracking this bug down and providing a fix for it.
So far, my quick-and-dirty kludge is just to replace "*" with "param" and hope that the user is actually using an object to hold params, and not some other crazy combination.
Which reminds me - has anyone ever seen an example of an <object> element containing non-param elements on a real, live, web page - somewhere in the wild? The HTML spec says that the <object> element can contain any HTML, but that sounds a little bit too crazy for my tastes.
Tags: ie7, browsers, bugs, object, getelementsbytagname
11 Comments on 'Object getElementsByTagName IE7 Bug'




