I feel like writing a bit about what I did for kjs, only about the new features (ignore bug fixes for now).
Lets start with the things I already got in a released version:
- String.trim, trimLeft, trimRight
Not that much hm?
Now lets look at the Stuff I am trying to get in for 4.9.2:
still not much…
And the rest with is implemented but still needs cleanup, or review, or something else to get in:
- Object.defineProperties (blocked by Object.defineProperty)
- Object.isExtensible (mainly blocked by Object.defineProperty)
- Object.preventExtensible (mainly blocked by Object.defineProperty)
- Object.seal (mainly blocked by Object.defineProperty)
- Object.isSealed (mainly blocked by Object.defineProperty)
- Object.freeze (mainly blocked by Object.defineProperty)
- Object.isFrozen (mainly blocked by Object.defineProperty)
- Object.create (blocked by Object.defineProperty)
Ok, thats a bit more.
With the already present functions that would nearly complete ECMAScript Edition 5. Doesn’t sound bad huh?
But still, with all those new functions (and some bugfixes), kjs has no chance to rule the web-world.
Why? Its not because it is to slow, or some other major bugs that keep websites from working. The reason is much simpler…
Let me show you the problem by (I think) simple js code, taken from battle.net (reduced).
if (browser == 'ff')
version = /firefox\/([-.0-9]+)/.exec(userAgent);
else if (browser == 'ie')
version = /msie ([-.0-9]+)/.exec(userAgent);
else if (browser == 'chrome')
version = /chrome\/([-.0-9]+)/.exec(userAgent);
else if (browser == 'opera')
version = /opera\/([-.0-9]+)/.exec(userAgent);
else if (browser == 'safari')
version = /safari\/([-.0-9]+)/.exec(userAgent);
UserAgent.version = version.substring(0, 1);
So the main reason is, kjs/khtml fails at the browser detection…
NOTE: Not for all websites its so easy to find the core problem, sometimes it looks very different at the beginning.
So thats it, no matter how fast or how bugfree kjs/khtml will become, it will never work this those websites.
P.S.: I know you can change the browser detection in konqueror, but that is not a solutions for the users.