Great article. One small correction. document.createElement(elementName) isn't really to do with the CSS engine. What confuses this is when Sjoerd Visscher, when he posted his comment on Sam Ruby's blog, making the trick known to the world, was under the impression that it affected the CSS engine. But he was mistaken. In fact, it changes the HTML parser to recognise the element and add it into the browser's internal object model. (I hesitate to say "DOM" here. Early IE's internal object model to DOM API mapping was uncomfortable to say the least.) The fact that the CSS worked on the elements was a consequence of the parsing change. The significant difference being that JS is also able to manipulate the elements created.
Great article. One small correction. document.createElement(elementName) isn't really to do with the CSS engine. What confuses this is when Sjoerd Visscher, when he posted his comment on Sam Ruby's blog, making the trick known to the world, was under the impression that it affected the CSS engine. But he was mistaken. In fact, it changes the HTML parser to recognise the element and add it into the browser's internal object model. (I hesitate to say "DOM" here. Early IE's internal object model to DOM API mapping was uncomfortable to say the least.) The fact that the CSS worked on the elements was a consequence of the parsing change. The significant difference being that JS is also able to manipulate the elements created.
Thanks for the clarification π. I'll update the post accordingly