Wednesday, April 15, 2009

Weekly Source Code: JavaScript.... Big Reason Why It Sucks

Today in the Web 2.0 world you do alot of JavaScript coding being DHTML, all the set of frameworks (jQuery etc) or do AJAX. The biggest thing that all JavaScript coders (even the pros) moan about isn't how difficult it is to test/debug JavaScript (tools like Firebug or JavaScript support in MS Visual Studio.Net 2008 IE make this very easy) but the dreadful word: "browser compatibility".... Yes Internet Explorer (IE) vs Firefox etc. All the things that make you want to scream / run away crying!

Its such a pain for me, since I use Google Chrome as my main default browser so everything just works but then later I found that it doesn't work in IE because of some browser compatibility issue or a weird way that IE handle some JavaScript.... The main problem here is that the browser companies (Microsoft, Mozilla etc) doesn't come together and work on a solid JavaScript standard. Ladies & gents, that is the reason why we've language standards!! There is a promise that the next version of JavaScript will be standard accross all browsers but thats only "promises".

For example:
var name = "Lennie";
where you want the first characters e.g. "L" but in IE (IE is always the bad child it seams...) it returns "undefined" :-(

So you need to write it:

var name = "Lennie";

this works fine in all browsers.

So something to consider when your coding in JavaScript again.


Forumtroll said...

Actually, the charAt(int pos) instance method is more or less the standard when it comes to OOP and strings. That some browsers support C-style string handling, does not imply that C-Style string handling is the "correct" way to go about.

I'd say that Microsoft and IE scores 1 point on this one with regards to staying on track with OOP standards.

Forumtroll said...

furthermore, Javascript is not PHP ;)

Lennie De Villiers said...

My blog post is about how in-compatible JavaScript is between all the browsers.... and yes even PHP run fine all all the browsers!