JavaScript and DOM Compatibility

With the increasing popularity of advanced JavaScript techniques on the web (variously called web 2.0, AJAX or DHTML), we’ve decided to make a big push for JavaScript and DOM compatibility. And hey, this stuff is useful for a lot of web 1.0 sites as well. (Can you tell I’m not a fan of these buzzwords?)

We’re testing against a number of test suites, including the JavaScript test suite from Mozilla and several DOM test suites from the W3C. We won’t obsolete quirksmode.org any time soon. And we are also working to support nonstandard “DOM Level 0” features and Firefox and mozilla quirks. But we’re making a lot of progress on this standards stuff too.

Here’s a quick update on where we stand, with the latest cvs version of WebKit:

JavaScript

Mozilla JavaScript tests 1111 total 1018 passed 91.63% success

DOM (in HTML pages)

DOM Level 1 Core (html) 238 total 226 passed 95.0% success
DOM Level 2 Core (html) 11 total (1) 11 passed 100% success
DOM Level 2 Events (html) 26 total 26 passed 100% success
DOM Level 2 HTML (html) 685 total 680 passed 99.3% success

DOM (in XHTML pages)

Note, this section applies only to XHTML pages served with an XHTML mime type. This doesn’t apply to most XHTML pages on the web today. But we’d to be forward-looking and so we’re doing our best to make XHTML and XML work really well in the WebKit engine.

DOM Level 1 Core 238 total 212 passed 89.1% success
DOM Level 2 Core 11 total (1) 7 passed 63.8% success
DOM Level 2 Events (xhtml) 26 total 26 passed 100% success
DOM Level 2 HTML (xhtml) 687 total 597 passed 86.9% success
DOM Level 3 Core (xhtml) (2) 708 total 78 passed 11.0% success

In closing, I’d like to add that even though we’re not yet passing all the DOM test suites, on many we are actually doing better than most other browsers, and we’re actively working to do even better.

1: A lot of the DOM Level 2 Core tests are not available in HTML standalone versions yet – we’re working with the W3 Consorium’s QA working group on this.
2: DOM Level 3 support is completely experimental – we haven’t really made a full-on attempt to work on it yet.