{"id":299,"date":"2008-03-06T21:17:57","date_gmt":"2008-03-07T02:17:57","guid":{"rendered":"http:\/\/unitstep.net\/blog\/2008\/03\/06\/ie8-cometh\/"},"modified":"2009-04-05T00:14:07","modified_gmt":"2009-04-05T05:14:07","slug":"ie8-cometh","status":"publish","type":"post","link":"https:\/\/unitstep.net\/blog\/2008\/03\/06\/ie8-cometh\/","title":{"rendered":"IE8 cometh"},"content":{"rendered":"

Internet Explorer<\/p>\n

If you’re into web development you’re likely aware of the big news from Microsoft that Internet Explorer 8 Beta 1<\/a> is now available. This comes less than 1.5 years since IE7 was released, and represents a much faster development cycle than was observed with IE7. (Over five years passed between the initial release of IE6 and IE7)<\/p>\n

With Firefox Beta 3 released not long ago<\/a> and the final version due in the first half of 2008, Microsoft has been feeling the heat and probably has decided to devote real effort towards improving Internet Explorer in order to regain market share lost mainly to Firefox.<\/p>\n

However, what’s most interesting and impressive about IE8 is not its fast follow-up to IE7, but its broad support for web standards and other improvements that many did not expect, especially after the poor track record of IE6 that wasn’t improved much by IE7<\/a>.<\/p>\n

<\/p>\n

Be Ready<\/h3>\n

Microsoft details the many important changes IE8 will bring in their IE8 Readiness Toolkit<\/a>. Besides passing the Acid2 test<\/a> (MS has created a list of CSS<\/acronym> 2.1 Test Pages\/Cases<\/a>), the browser also natively supports the hAtom Microformat<\/a> in order to implement what MS calls “WebSlices”, which are basically portions of a webpage that can be subscribed to, much like an RSS<\/acronym> feed. The example shows how to mark up an auction item and its price so that the content can be easily be scraped, organized and read by an aggregator. <\/p>\n

Other improvements in the area of JavaScript are also appealing. In the area of Ajax, MS is pushing a Cross-Domain Request model (XDR), which would overcome the same-origin restrictions of the current XHR object. It is claimed that this is secure, but we’ll have to wait-and-see if this also adopted by other browsers. Hopefully it is, if its proven to be an open and robust standard – after all, XMLHttpRequest did<\/em> start off at Microsoft. Whatever the outcome, clearly a solution to the same-origin XHR policy must be found, since current workarounds (such as injecting a script<\/code> element into the document) are cumbersome at best.<\/p>\n

IE8 has also addressed the JavaScript circular memory leak problem seen in previous versions. This problem can occur because of careless coding that creates references and situations that the previous garbage collector could not deal with properly; basically, if two objects referenced each other (with their properties), they would never be considered “dereferenced”, even if no other references existed for them. This has the tendency to eat up memory, and unfortunately, it’s quite easy to do this accidentally in JavaScript. Fixing this problem is especially important now that web applications are increasingly relying on complex JavaScript for features.<\/p>\n

From a user point-of-view, IE8 adds a lot of social-web and other features that cut across multiple websites. For example, it’s easy to share a website on Facebook\/Digg, or select an address on a webpage and look it up using Microsoft’s Live Maps service with the built-in functionality. What remains to be seen is if IE8 will develop a vibrant third-party plugin community like Firefox has – this has been one feature of Firefox that I simply couldn’t do without, and it allows you to easily add functionality that’s not present in the core. <\/p>\n

Hope for the future<\/h3>\n

All of this may come as a shock to web developer, who for years have had to deal with IE’s hopeless inadequacy when it came to following web standards. Far too often, the development cycle would look something like this: 1) Get it working in a standards-compliant browser (like Firefox or Opera); 2) “Hack it” to get it to work properly with IE. Though I have not had a chance to properly look at IE8’s beta, it appears that this version will finally get things right, making things much easier for us all. Microsoft has claimed this to be part of their interoperability push<\/a>, but I believe it’s a push to be more like Firefox to slow the flow of users who are switching from IE to Firefox.<\/p>\n

The biggest change, and perhaps the most recent, to IE8 was Microsoft’s reversal of how they’d handle standards mode<\/a>. Previously, they had decided that true standards-mode would only be invoked on the browser’s rendering engine if the web page specified it. That is, by default, IE8 would use a quirks-mode compatible with how IE7 had worked. This was utterly stupid and contrary to the nature of web-standards. A standard should be used by default!<\/p>\n

Furthermore, the only reason behind this decision was that MS did not want to “break” how IE8 worked with websites that were previously designed to work with IE7’s not-so-standards mode – a problem that they had created by not following standards in the first place. This sort of reasoning effectively slows adoption of standards, since it creates a chicken-and-the-egg problem – if the dominant web browser doesn’t properly follow web standards, neither will a significant number of websites. Thankfully, Microsoft decided that the chicken’s (or the egg, if you will) time has come, and that IE8 will support standards mode by default – the way it was meant to be. <\/p>\n

Some things do concern me, for example, the way “Activities” are implemented. Currently, a website can add in an activity with the following code example from the IE8 site<\/a>:<\/p>\n

<button onclick=\"javascript:window.external.addService('GetMap.xml')\">Add Map Activity<\/button><\/code><\/pre>\n

The “GetMap.xml” file points to XML<\/acronym><\/a> that describes the activity’s functionality. So as long as other browsers\/plugins aren’t prevented from implementing support for this, things should be okay. Otherwise, we risk a disturbing slide back towards the day when sites were “best viewed in “. <\/p>\n

(As a side note, I understand that the example code was for brevity, but the best way to invoke JavaScript on a page is not using an inline call like that, but in a separate JavaScript file using proper event handlers. Also, one should test for the existence of a method that may not exist, before calling it. Checking for user-agents\/browser versions<\/a> is a big no-no. As far as I know, window.external.addService is IE8-only right now.)<\/p>\n

Looking forward<\/h3>\n

Overall, I’m very pleased with what IE8 promises. It’ll be interesting to see how fast it is adopted by the masses and how this measurement compares with how fast IE7 was adopted. We’ll also get to see if Microsoft’s adoption of web standards has an effect on its share of the browser market.<\/p>","protected":false},"excerpt":{"rendered":"

If you’re into web development you’re likely aware of the big news from Microsoft that Internet Explorer 8 Beta 1 is now available. This comes less than 1.5 years since IE7 was released, and represents a much faster development cycle than was observed with IE7. (Over five years passed between the initial release of IE6 […]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[75,210,74,24],"tags":[],"_links":{"self":[{"href":"https:\/\/unitstep.net\/wp-json\/wp\/v2\/posts\/299"}],"collection":[{"href":"https:\/\/unitstep.net\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/unitstep.net\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/unitstep.net\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/unitstep.net\/wp-json\/wp\/v2\/comments?post=299"}],"version-history":[{"count":1,"href":"https:\/\/unitstep.net\/wp-json\/wp\/v2\/posts\/299\/revisions"}],"predecessor-version":[{"id":828,"href":"https:\/\/unitstep.net\/wp-json\/wp\/v2\/posts\/299\/revisions\/828"}],"wp:attachment":[{"href":"https:\/\/unitstep.net\/wp-json\/wp\/v2\/media?parent=299"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/unitstep.net\/wp-json\/wp\/v2\/categories?post=299"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/unitstep.net\/wp-json\/wp\/v2\/tags?post=299"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}