Howdy folks,

IE8 has been officially release today – download it here! It’s nice to see IE 6 get pushed further and further into the past.

I already posted about this stuff a long while back, but I thought refreshing my memory was probably a good idea. Here’s some of the new features, from a developers point of view.

JavaScript & the DOM

The previous IE release was mainly devoted to CSS compliance fixes, but IE8 has lots of nice new juicy features for JS.

  • Browser Nav: the browser’s query string hash property (#) is writable and any changes are logged for use with the browser’s back button. This will hopefully make external Ajax nav libraries like RSH a thing of the past.
  • Offline Save: ajax apps can save data locally if offline. This seems like a very basic version of some Google Gears functionality, but at least it’s built into the browser itself.
  • Increased number of connections to same host: IE 8 increases the # connections to 8. This could be handy for reducing response times for simultaneous Ajax requests.
  • Timeout requests: option to set timeout requests on server calls.
  • Sanitize HTML: remove event properties and scripts from HTML fragments with window.toStaticHTML. Kinda interesting.
  • Cross-document Messaging — Documents in different domains can securely exchange data using postMessage. Documents that receive messages listen for the onmessage event.
  • Cross-domain Request (XDR) — To allow developers to more safely combine services from different Web sites, the XDomainRequest object restricts and secures communication between untrusted modules in a Web page. The browser shields the user from potential threats while allowing powerful cross-site interaction.
  • querySelector and querySelectorAll. These allow you to select any DOM element based on the selector. For anyone who’s used any of the JS frameworks over the last few years, these will be less than thrilling; jQuery, Prototype, Mootools etc all have this already.
  • document.getElementById finally WORKS; i.e. (no pun intended) it returns elements by ID only (not “name”, arghhh!!) and it’s case sensitive at last.
  • DOM Storage. I posted about this a long time ago. Neat idea. From their site:

“The ability to store and retrieve large amounts of data directly to a user’s hard drive is important to browser-based applications that want to extend their reach beyond client-server interactions. Local storage is also comes in handy when disconnected from the Internet, and synchronize local changes when an active Internet connection returns. Scriptable online and offline connectivity events fire when connection status changes.”

  • setAttribute is now case-sensitive and works with “class” and “for” attributes. Nice! Lack of support for class was a bloody drag. All my DOM code assigns the class twice. Once for IE, once for the rest of the world.
  • button element now submits its actual VALUE, not innerHTML value.

CSS

Further CSS compliance.

  • display element now supports all the various table-related values: table, table-row, table-row-group, inline-table, table-cell and others.
  • :before and :after pseudo-elements now supported. Cool!
  • counter-reset and counter-increment added.
  • outline — Enables elements to be highlighted without affecting their size. The outline is a shorthand property for outline-color, outline-style, and outline-width.
  • Printing — The following properties have been added:
    - page-break-inside — Avoid page breaks inside an element’s box; if necessary, Internet Explorer will move the element to the following printed page.
    - widows and orphans — Control how many lines appear at the bottom and top of each printed page.
  • Additional pseudo classes — The following pseudo classes are supported by Internet Explorer 8:
    - :lang(C) — Selectors can match an element based on the lang attribute of an element or one of its ancestors. The default language of the Web page is set on the html element.
    - :focus — Applies while an element has the input focus.
  • browser-specific attributes — CSS properties that apply only to Internet Explorer are named with the -ms- prefix, such as -ms-writing-mode.