I’ve just watched MIX keynotes and as soon as MSFT announced there was free VS2010 Express for Windows Phone 7 with proper emulator, I downloaded, installed it, created sample app and ran the debugger.
Here’s some screenshots:
VS2010 Express for Windows Phone IDE:
Windows Phone 7 Emulator running in the debug mode:
The most interesting thing for me was to find out which IE version Microsoft decided to ship with Windows Phone 7. They said it wouldn’t be IE9, but would be something between IE7 and IE8. They also assured that the Windows Phone emulator (which comes bundled into the VS2010 Express for Windows Phone 7) is a proper virtual machine, a real copy of Windows Phone OS sandboxed in the VM engine.
So bearing this in mind I thought that I’d test the WP7 IE in emulator.
And here’s interesting stuff:
navigator.appVersion
on Windows Phone 7 IE returns
4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0
User-Agent string is
Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone Os 7.0; Trident/3.1; IEMobile/7.0
@_jscript_version
reports 5.8 (as IE8 does)
[if IE 7]
conditional comments section gets applied
*+html selector { rules }
hack works
So at this moment IEMobile/7.0 seems to be a slightly adjusted Trident (layout engine) of IE7 and jscript of version 5.8. (as it turns out below, some features are either disabled or not accessible now, or will not be supported at all)
To dive deeper into the details, I’ve tested several things and prepared the following table:
Feature | **Supports** |
native XMLHttpRequest | Yes |
XDomainRequest | No |
Selectors API | Yes |
clipboardData | No |
data URI | No |
maxConnectionsPerServer | No |
sessionStorage/localStorage | No |
offscreenBuffering | No |
native JSON | No |
DOM Objects prototypes | No |
getters/setters | No |
So from the CSS prospective Windows Phone IEMobile 7.0 is indistinguishable from desktop IE7, it applies the same conditional comments rules, supports the same subset of CSS selectors, same hacks work and same bugs are there. If you know how to support desktop IE7 Trident, you won’t have a problem with IEMobile 7.0.
Completely different situation is with javascript – jscript version is 5.8 (same that IE8 has), but many features that IE8 supports via COM wrappers do not exist on IEMobile 7.0 (does it have COM at all?). Also it lacks support for some native features of jscript 5.8 (e.g. native JSON, DOM objs prototypes, getters/settters). The only feature I can see from IE8 is Selectors API support, which is great, but really – is that what we really expected?
So from what I see now, Microsoft took IE7 Trident (3.1), took jscript 5.8 and cut off as much as possible (all COM wrappers and some native features), put IE8 icon on top and shipped it to Windows Phone 7.
I really hoped it would have IE9 or at least IE8.
The only hope is that it’s still beta and all the IE8 stuff will be shipped with the final version. Hope it’s not just a wishful thinking.
It’s such a frustration to see a beautiful and free VS2010 Express for Windows Phone 7, awesome SL4 which runs everywhere, and then look at this crippled “IE7.234”. If this is a marketing choice to make web-developers write in Silverlight, then it’s silly because it breaks the most important feature Microsoft provided – backwards compatibility. Old sites and current sites which Windows Phone users will want to visit will break in this browser. Gmail works in html-only mode. Surely, some will adapt. But not all.
And by the way, Apple got it right on iPhone.
P.S. Todd Brix said there would be a Windows Update-like service in Windows Phone 7, so let’s hope that IEMobile will get updated.