Forum Moderators: open

Message Too Old, No Replies

IE8 Beta 2 "Feature Complete" But Still Rather Buggy

And Beware The Pitfalls Of Version Vector Metatags

         

poppyrich

4:58 am on Sep 13, 2008 (gmt 0)

10+ Year Member



Online Thursday, the platform architect of the IE team said IE8 was "feature complete".
In other words, what you see in Beta 2 is essentially what will be there in the final release. It's bug fixes from here on in.

From that standpoint, it might pay to take a look because there's quite a bit that's new in IE8.

On the other hand, having worked with Beta 2 a lot since it's release, I can tell you firsthand that it's still very buggy - especially in regards to manipulating the DOM with script. Basic methods like cloneNode and removeNode cause the browser to crash. (Or, to be accurate, more often just the tab crashes - IE8 actually is more robust, as promised)
And some basic events like window.onresize are conspicuously missing.

I'm frustrated because bugs that big are bound to be fixed so why even bother to report them at this stage of the game?

The IE team had promised Beta 2 for August. My suspicion is that things were taking a little longer than expected, so they just shipped what they had, for what it was worth, figuring, "Hey, it's a Beta, no harm no foul."
Or perhaps, but I think less likely, certain things were deliberately left out in an effort to take variables out of the bug report mix. Figuring, "Hey, it's a Beta, if you install it, you're a willing test subject."

Lastly, what's puzzling me greatly is the mutational mushrooming of the notorious Version Vector metatag - now a plurality of metatags - which control backward compatibility with Quirks mode and IE7 pages.
There are now at least five flavors:

<meta http-equiv="X-UA-Compatible" content="IE=IE8" />
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE8" />
<meta http-equiv="X-UA-Compatible" content="IE=IE7" />
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<meta http-equiv="X-UA-Compatible" content="IE=IE5" />

Plus, some of these are further modified by the presence of a Quirks, Standards, or absent Doctype. Some of them will make the new "compatibility button" disappear, some won't.
I think I understand which ones do what but it's bothering me that I think I understand. It reminds me of physicist Richard Feynman's famous comment about quantum physics: if you think you understand it, you don't undertand it. Doctype switching in IE6 and 7 was a simple toggle - in IE8 things have gotten a lot more complicated. And so far, I'm not happy with the clarity with which it is being explained.

Regarding these metatags and the behavior they trigger in IE8, one IE programmer was asked by a web developer online:

"Is there any practical difference between IE8 in Compatibility Mode and IE8 in IE7 Standards Mode?"

The reply:

"In Compatibility Mode we are using the IE7 Version Vector so that bad UA detection by the web site does not cause rendering issues. IE7 Standards mode will use the IE7 rendering engine, but the browser will be using the IE8 version vector."

Hmmph, err, yeah, uh, well, now that's clear as mud, isn't it?

Advice: check it out and do some reading and some tests before it bites you.

Beta 2 is certainly up for THAT task, at least.

footpad

8:36 pm on Sep 23, 2008 (gmt 0)

10+ Year Member



I believe that version vectors are different from the document compatibility header. "Version vectors" are tested using conditional comments and are usually the best way to detect IE specifically.

(AFAIK, no other browser has ever tried to imeplement VV's. When you combine that with the fact that they work even if scripting is disabled, VV's are a very effective way to detect IE, far more effective than sniffing the user-agent string). More details are avilable from [msdn.microsoft.com...]

The document compatiblity header ("X-UA-compatible") is a different approach than version vectors. The three value-specific modes lock you into specific rendering modes, as follows:

-- IE=5 renders your page in quirks mode (e.g. as if it were displayed by IE 5)
-- IE=7 renders your page in IE7 Standards mode
-- IE=8 renders your page in IE8 Standards mode

These settings ignore the value of the DOCTYPE directive. In one of these modes, if you include the header and have a DOCTYPE that specifies a different rendering mode, the header wins.

-- IE=EmulateIE7 emulates the behavior of IE 7. If there's no DOCTYPE , the page is displayed in quirks mode. If there is a DOCTYPE and it contains a Standards mode definition, the page will be displayed in IE7 Standards mode.

-- IE=EmulateI8 is very much like EmulateIE7, however, the Standards mode doctype will cause the page to be displayed in IE8 Standards mode.

With these two settings, the DOCTYPE directive takes precendence over the header.

(If the page has no DOCTYPE and does not include the header, it's rendered as a quirks mode page.)

IE8 Standards mode is more compliant than IE7 Standards mode. The price of that compliance, however, is that certain markup forms will now render differently. This will break sites that rely on the older rendering behavior. In some cases, IE8 standards mode breaks older markup because IE8 renders that markup different now.

For a more comprehensive example, including some history, please see [msdn.microsoft.com...]

If you think about it, it's pretty easy to think of sitations where one Web developer might want to choose any one of these options from the others.

Hope this helps...

-- f

Leosghost

10:34 pm on Sep 23, 2008 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member Top Contributors Of The Month



IE8 Standards mode is more compliant than IE7 Standards mode. The price of that compliance, however, is that certain markup forms will now render differently. This will break sites that rely on the older rendering behavior. In some cases, IE8 standards mode breaks older markup because IE8 renders that markup different now.

Seems to me that same paragraph could'h've been written about every IE iteration ( with substitutions of the names of the "guilty" where applicable )..

I'd love to hear "is more compliant" ..only minus the "more" and be able to beleive it ..and then I could forget "if IE ( choose your flavour" ) ..conditional comments ..

But they wont get it right before they shove it out the automatic updates door ...so
Even when they make it final and non beta # ? ..I'll thinstall it just like I did with IE7 final ( works a treat :) "thinstall is your friend" ( even at 5K a "pop" ..and even given the typo's in their landing page ..oy! )..for 5K a proggy one can employ proof-readers for one's website ..neh?

[mild rant]Remember the IE7 teams "bug" report blog :( ..even the MS staff had to finally accept that they were shipping an app with yet again integrated crap because the suits thought they could get away with it via automated updates ..when are the people who run the big corps ( G included ) going to allow their engineers to take some justified pride in their work ..instead of just hustling to get it out of the door .."a la vista" ..or "chrome" ..and then relying on their PR machines to scam us the bling because they skimped on the substance ..yet again ..[/mild rant]

poppyrich

5:58 pm on Sep 24, 2008 (gmt 0)

10+ Year Member



Thanks footpad.

Actually I could have written your post myself (pretty much) but I was waiting for someone else (thanks!) to write up the mouthful that describes the whole metatag/compatibility mode business.
I ain't crazy, after all.

It's still an eye-glazing dyslexic jumble it is but it looks like we're stuck with it.

Bottom line advice: Paste in the metatag you think applies and test until the page looks right and the compatibility button disappears.

That about sums up what to do, eh?

footpad

8:45 pm on Nov 14, 2008 (gmt 0)

10+ Year Member



Not trying to offend anyone, but why wouldn't you use the new Developer Tools to preview your page in different rendering modes to see which one handles your content closest to the way you want it? Seems more quick than uploading multiple versions of your page and previewing. :-)

Once you know the mode best suited for your site, configure your web server to provide the appropriate X-UA-Compatible header for all pages and then customize specific pages for different modes when you're ready. (Remember that the page's header wins over the server's). Boom, you're done.

Yes, it is an eye glazing jumble and, looking at the relevant WASP discussion (http://www.webstandards.org/2008/02/24/wasp-round-table-ie8s-default-version-targeting-behavior/), it seems like a lot of people tried to find the right compromise that works for the most people.

Think about it for a second. We have no way to go back to IE6 standards mode because the DOCTYPE directive only specifies whether standards mode is on or off. IE7 standards mode replaced IE6 standards mode. By creating a new switch that accepts a version number, you can target the specific rendering behavior you want on a page by page basis. I think that's pretty flexible when you think about it. YMMV.

BTW, I hear that the IE team is taking a pretty careful look at the things reported to the IE Beta newsgroup (http://go.microsoft.com/fwlink/?LinkId=110585). If you know of markup that doesn't work in IE8 Beta 2, this is probably the time to report it.

Cheers!

-- f

poppyrich

11:44 pm on Nov 16, 2008 (gmt 0)

10+ Year Member



I'm deeply, deeply offended (Hah!) but you are quite correct and I wrong-headed. Developer Tools is the handiest way to see which metatag (or none at all) works best. I'm still so unused to IE having handy tools that I forget sometimes.
First the American Presidential election and now this. A new era!

PS - Incidentally, as far as the bug reports: I'm an invited Beta tester but I gotta tell you that after a couple of reports I stopped. Beta2 is just too buggy overall. I'd be at it all day. I am assuming a Beta3 soon or perhaps an RC1 and then I'll take a fresh look.
But yes, I know they are paying careful attention.

essiw

2:09 pm on Nov 17, 2008 (gmt 0)

10+ Year Member



also for the beta2 version the <!--[if IE 8] etc. does not work...

poppyrich

1:40 pm on Nov 18, 2008 (gmt 0)

10+ Year Member



@essiw

Conditional comments work in IE8 B2.

Be aware that in compatibility mode, IE8 reports itself as IE7 because it's emulating IE7. In IE8 strict, it reports itself as IE8.
That might be the problem.