Here’s something I’ve been pondering after countless hours fixing JS to be cross-browser compatible (mostly IE): Why isn’t Javascript consistent accross browsers?
I mean, why can’t JS be nice like Java and Flash? Instead, we have to resort to frameworks like jQuery. Don’t get me wrong, they make my life easier – but why do they even exist in the first place?
Is there a historical reason for this? Do companies rolling out browsers just ship their own JS engine? What are the politics that make standardization so difficult?
(Note: I understand that a good part of the problem is DOM related, but the question remains).
The Javascript core language for the most part is consistent ( Referring to ECMAScript version 3 released in 1999. )
It’s the DOM implementations that cause headaches. Partly because at one point there was no DOM specification so browsers could do whatever the hell they wanted in terms of making up the rules for which to access and manipulate html elements in a web page.
For example:
window.addEventListenerfor DOM supporting browsers, whilewindow.attachEventfor IE.textContentfor DOM supporting browsers,innerTextfor IE.getElementByIdis buggy in IE and Opera because it returns elements by namegetAttribute('href')returns inconsistent valuesThere are also issues relating to the browser’s CSS support.
Language core inconsistencies would be things like
But yeah, in short the point is that before, there was no standard. Since then, the w3 came up with standards, but every browser vendor has its own way of dealing with implementing it. There’s no governing body that forces the vendors to fully apply the spec.