Thursday, March 6th, 2008

IE 8 on Acid

Category: Browsers, IE, JavaScript

The IE team posted that they were passing Acid2 a few months ago, yet people are seeing a broken face when they tested with IE 8 beta.

Phil Nachreiner of IE explained the situation:

Although we said that IE8 Beta 1 passes the ACID2 test, some of you may be seeing results like the image above; we thought we should explain what’s going on. IE8 passes the official ACID2 test hosted on http://www.webstandards.org/files/acid2/test.html. (Note, this seems to be a popular destination at the moment. You may have trouble reaching the site.)There are also a number of copies of this test around the net. One popular copy that I’ve seen of late is http://acid2.acidtests.org/

IE8 fails the copies of ACID2 due to the cross domain security checks IE performs for ActiveX controls.  Since IE does not natively handle HTML content in the OBJECT tag, but rather uses IE’s rendering engine as an ActiveX to display this HTML content, the same cross domain security checks also apply.

Given that, let’s take a look at how the acidtests.org copy from above relies on OBJECT fallback to render the eyes. Here’s the snippet of the test for the eyes:

  1. <object data="data:application/x-unknown,ERROR">
  2.     </object><object data="http://www.damowmow.com/404/" type="text/html">
  3.                 </object><object data=”data:*the eyes DATAURI* …>
  4.     </object>

IE stops the OBJECT fallback process at the highlighted line above. The team and I involved in this work decided that this is the right thing to do because IE would have to allow navigation to this cross domain content in order to determine if the failed resource is a 404 HTTP error code or any of the other failed resource indicators that are part of the standard. To maintain compatibility and be secure by default we didn’t want to invoke fallback either, as original web authors might not have intended this behavior. We started with the most secure solution and are now looking into whether we can safely loosen this restriction in a future beta.
With all that said let’s also take a look at the official ACID2 page hosted by www.webstandards.org:

We see:

  1. <object data="data:application/x-unknown,ERROR">
  2.     </object><object data="http://www.webstandards.org/404/" type="text/html">
  3.          </object><object data="data:*the eyes DATAURI *>
  4.     </object>

Note that we see the same domain as the test, so everything works fine.

What about Acid3?

For IE7 and ACID3 I got: 14/100

The rendering was seriously messed up (boxes and off-color elements everywhere).

For IE8B1 and ACID3 I got 17/100.

The rendering was much better. The blocks showed up and appeared to be pretty correct size but were all black and gray (no color).

This just came out, so hopefully the team will have time to look at it before a beta in the future.

John Resig has a nice catalog of JavaScript related fixes in IE 8. I like how it is our release:

Our day has finally come. CSS coders got some love with Internet Explorer 7 – us JavaScript folk got absolutely nothing. In fact, at last count, all we got were a couple new bugs to deal with (file:// requests not working via XMLHttpRequest and <object>.getElementsByTagName(“*”) always returning no elements).

Internet Explorer 8 is our release.

Posted by Dion Almaer at 6:38 am
3 Comments

+++--
3.9 rating from 22 votes

3 Comments »

Comments feed TrackBack URI

Thats a reasonable explanation. I have to say, I’m impressed that they are even commenting on it.

I thought what they meant was “We passed it”, “Now we no longer have to worry about it”…. good to see the continued push towards REAL OPEN standards Microsoft. Keep it up.

Comment by Carbon43 — March 6, 2008

I don’t know… just tried my site on it and I see sort weird stuff that FF3 and Safari3 didnt do…

Plus it does not apply styles to xhtml I dynamically added in my page using prototype’s “Insertion.Bottom()” (aventried After(), Top() or Before()…). Maybe it’s just that Prototype needs to be updated for IE8… I dunno…

I guess the Acid test is not the end-all of tests when it comes to making sure you are CSS 2.1 compliant… and right now I very much doubt that IE8 actually is …

Comment by JeromeLapointe — March 6, 2008

I see all of these posts on the hype of IE8, many of the improvements are great (it’s about time they actually attempted to pass the acid test instead of just claiming they were compliant). Many of the JS improvements are good. Would be nice to see some answers on some of the fundamental questions/issues that cause so much development headache if anybody out there can get MS to open up.

Are they going to at least alias the opacity filter to actually support the real opacity standard? How many other MS-CSS filter properties mirror actual CSS standards properties?

Are we going to see exposure Element and Node (and their associated prototypes) and all of the other DOM abstracts that are needed for high end development? Need I mention the performance and memory improvements you gain by not having to manually extend every element in the DOM?

Are they actually going to treat XHTML (and preferably HTML also) as an XML based language so that XPath and inserting XML nodes etc actually works?

Will we see any of the newer JS standard functions (Array.forEach etc)?

Why is it that every JS library developer can manage to get full CSS3 selector support, yet MS cannot? Why waste everyones time with the selectorQuery function and then do it halfway?

Is getElementsByTagName(‘*’) going to continue to return a text node (DOCTYPE?!?!?!) as the first item?

Are they going to fix arrays so that numbered arrays that have a named property added don’t return a type of string when for the key when a numbered element is accessed?

Are they finally going to get rid of all of the peek-a-boo bugs (yes they still happen in 7)?

Events!?!?!? go figure

It is fantastic that they are going to have support for more standards (MathML, SVG etc). Why don’t they get the basics fixed before they try to jump the gun on emerging standards and screw those up also? Or is this another attempt to subvert emerging standards to MS incompatible standard before the real standards can solidify?

Sorry, for the rant all, this is in no way trying to shoot the messenger. Great job in letting the world know what is going in with IE8. Hopefully, MS’s new “transparency” will allow people to get answers on whether IE8 will actually be a fix to their existing shortfalls or just a broken implementation of new and old standards.

Comment by ozonecreations — March 7, 2008

Leave a comment

You must be logged in to post a comment.