This comes from a popular question on Stack Overflow. Given the popularity of the question, the fact that it is now closed and the fact that the highest-ranked answer there is a little imprecise, I’ve decided to write up an explanation here.
Author Archives: Tim Down
Why
Empty XHTML tags and Internet Explorer DOM traversal
Here’s the problem: HTML and XHTML pages containing empty elements with no end tag such as <span /> break JavaScript DOM traversal methods in Internet Explorer 6, 7 and 8, resulting in nodes after such an element showing up in more than one node’s childNodes collection. Continue reading
Range.intersectsNode, Mozilla and WebKit
Today I needed to know whether a Range object (obtained from a selection) intersected with a particular node within an HTML document, which is a relatively common scenario when developing WYSWIYG editors. Mozilla’s implementation of Range used to have a proprietary intersectsNode method, which was ideal. However, they’ve removed this in Gecko 1.9 (and therefore Firefox 3) and provided an example function that does the same job. Unfortunately this function doesn’t work in WebKit (and hence Safari and Chrome) because of a bug in WebKit: they seem to have managed to invert the behaviour of compareBoundaryPoints with END_TO_START and START_TO_END. Tsk. So I’ve modified the Mozilla example to work consistently with all browsers that support Range Continue reading
JavaScript eval in iframes
In the course of developing a new version of log4javascript, I was adding a command line feature that required the ability to evaluate and execute code in an iframe from within the main window. Fine, I thought, I’ll just call eval on the iframe window object. Which predictably worked fine in Firefox and Opera 8+, but did nothing in IE, which seemed to be missing the eval method on the iframe.