Sunday, August 05, 2007

iPhone, Nintendo DS Web Browser, Compatibility

I'm a sucker for weird web browsers, so I just had to go and buy the web browser for my DS. It uses both cartridge slots -- a memory module goes into the Gameboy Advance cartridge slot, and the browser itself goes into the smaller DS slot.

This shows my flexible inVue test page running on the DS's browser (correctly!). Yes, I realise some of you, who didn't already, hate me now...

The DS's web browser is written by the Opera people, and it represents a fine example of why Apple rocks and other software companies don't. It is possible to configure this browser so that it is reasonably usable and makes sensible use of both screens, but it's certainly not obvious how. The screen you're seeing in the image is the lower (touch) screen, and the blue rectangle is the zoomed in portion being shown in the upper (non-touch) screen. In this mode you can press some buttons to toggle a mode which lets you click in the touch screen area. In the DS browser's default mode, however, web pages are displayed in mangled form (basically ignoring most formating) across both displays, treating the two as a single tall, narrow display. This mode is almost entirely useless and disconcerting.

I visited an Apple store and asked one of the helpful people if I could try out an iPhone in EDGE mode. They very helpfully showed me how to disable the WiFi support, so I was able to get a more realistic view of the iPhone browsing experience at its worst, and it is pretty nasty, at least on ludicrously heavy pages like Unlike the DS, the phone can handle multiple pages at once, and load pages in the background -- so you can diddle around on your iPhone or drink coffee while the page loads, but it's still darn slow. That said, the DS is painfully slow with a WiFi connection and appears to cache absolutely nothing (not even stuff that isn't currently being displayed in the current web page, so just scrolling a page makes you want to hurt someone).

But my original reasons for doing all these things was to make sure my ad code works properly on exotic platforms, and it does. (My video ad code has issues related to Safari/iPhone only supporting a subset of QuickTime codecs and not supporting Flash at all, but that's not really under my control.) It astonishes me how little effort it takes to make quite complex bits of JavaScript work properly across browsers, and yet how much terribly incompatible JavaScript is out there, even on quite major sites.