Tuesday, August 02, 2005

IE7 Beta 1

Well, I've finally had a brief opportunity to take a look at the latest browser from Microsoft: IE7 Beta 1. The good news is that it works just fine with Echo2, and that they've added support for rendering alpha channels in PNG images. Echo2 thus no longer needs to use IE's proprietary "image filter" capability to achieve this effect in IE7 as was required with IE6.

Echo2 sets 11 "quirk flags" if an Internet Explorer 6 browser is detected at startup, to enable alternate rendering to work with the limitations of this browser. With IE7b1, we've been able to reduce that number by only one, as a result of the PNG alpha channel support. I was hoping for a bit more. MS claims they've fixed a couple of the more egregious CSS bugs in 7beta1, e.g., the "peekaboo" and "guillotine" bugs. They also state that they'll be working on more CSS fixes for beta2. I've not noticed any benefit from the beta1 list of CSS fixes yet, though this may be due to the fact that Echo2's rendering code was in some cases built to entirely avoid these scenarios given that IE6 support is a design requirement.

The following is my current list of CSS/rendering bugs that in my humble opinion absolutely must be fixed in the next version of Internet Explorer:
  • We still can't do proper CSS positioning using the top/bottom/left/right properties. With IE7, like IE6, you are limited to using either one horizontal positioning property (left/right) and one vertical positioning property (top/bottom). If you do not heed this limitation, IE will simply disregard the bottom or right property. In Echo2, we work around this limitation by using IE's proprietary CSS expression property when an Internet Explorer browser is detected.
  • <SELECT> elements still wholly disregard z-index settings. This is explained by MSDN's "Dr. GUI" in this article which is a bit frustrating to read, as I believe that it is incorrect to characterize this behavior as anything but a bug. If you're unwilling to call it a bug, then it my book it's a design flaw. As a result of this issue, we still have to use the IFRAME-behind-a-DIV hack to successfully render content above SELECT elements in IE7.
  • SELECT elements are still very broken when it comes to updating them by manipulating the DOM. We still have to "ban" 100%-wide select elements in MSIE, as they just plain don't work. We still have to use a wholly custom DHTML component in place of a "multiple line" SELECT element to render ListBoxes. (ListBoxes magically turn into SelectFields after DOM manipulations in IE6 and IE7).
  • The repaint performance flaw mentioned in the previous article, More Fun with Browser Quirks is still in full effect.
  • 100% wide TABLEs still produce horizontal scrollbars in DIVs whenever vertical scrollbars are present.
  • Percentage-sized TEXTAREA elements still behave erratically (they sometimes adjust their size by a dozen or so pixels when text is entered).
  • Document.importNode() is not provided. The workaround for this limitation is to write a complete implementation of Document.importNode in JavaScript which traverses an XML hierarchy and recreates the nodes in the new Document.