MSHTML is the Windows component that renders HTML. It is part of Internet Explorer but also used by other applications (both from Microsoft and from third-parties) to embed HTML content; it is still sometimes called by its code-name, Trident. I’ve been interested in MSHTML for some time, and have worked on a free .NET wrapper called HtmlEditor.
At Mix08 I attended a session by Lead Program Manager Scott Dickens on cross-platform layout with IE 8. He told us that the layout engine in MSHTML “could not get us to where we needed to be” for the more standards-compliant IE8, which implements the CSS 2.1 spec. Therefore, the engine has apparently been completely rewritten.
As an aside, Dickens mentioned that the IE team worked with other teams in Microsoft that have layout expertise in order to rewrite MSHTML – he didn’t say which, but one imagines the XAML/WPF folk could have been helpful.
I clarified this point later. MSHTML actually lives on in IE8, but contains both the old and the new layout engines as different code paths. If you specify a quirks mode in IE8, it will use the old layout engine; but if you ask for best standards support (now the default), it will use the new layout engine. However, where MSHTML is embedded into another application, it will still use the old layout engine by default. “For hosted Trident, it will maintain that IE7 compatibility,” Dickens told me, though it will still be possible to opt-in to the new layout engine.
Wow. Any API hinted at yet?
Come to think of it, this explains why any enquires about MSHTML have been so fruitless in recent years. It’s been in the doldrums, and they’ve been directing all their energy to the new layout engine. Let’s hope they document it, or failing that, that they open up the code in the same was as they’ve done for .NET 3.5