问题描述
这是一个好奇的问题,看看事情是如何演变的,因为我目前没有进行任何类型的网络编程,但我记得写JavaScript
是这样的(伪代码):
if (foo exists)
call foo
else if (fooAsFirefoxNamedIt exists)
call fooAsFirefoxNamedIt
else if (fooAsOperaNamedIt exists)
call fooAsOperaNamedIt
else
message "We are sorry, you have Internet Explorer"
尘埃落定了吗? 环顾四周看起来有一个标准的ECMA-262 。 那正确吗? 如果是这样,所有主要的现代浏览器都实现标准化的JavaScript吗?
1楼
这有两个主要方面:
JavaScript是语言,稳定,和
将提供给JavaScript的浏览器功能(例如
addEventListener
与attachEvent
)稳定下来。
JavaScript稳定了吗?
JavaScript多年来一直非常稳定。 :-) ECMAScript3于1999年发布; 直到十年之后,我们才看到下一次更新( ,没有发布的ECMAScript4)。
除了过时的浏览器(IE6,IE7)之外,在ECMAScript5到来之前,JavaScript功能很长时间(除了Array#indexOf
,我认为)很长时间。
然后,虽然大多数浏览器供应商都很快地将他们的浏览器完全合规,但微软拖了很多年,所以你看到并且仍然看到很多针对Array#forEach
, Object.create
等的填充/填充,因为人们必须/必须支持在ECMAScript5之前发布的IE8,直到IE9问世几年。
可悲的是,IE8 因为它是Windows XP的最新版本,尽管生命周期结束仍然有很大的用途。
下一个版本( 又称ES6)应该“很快”(有些人乐观地称它为“ECMAScript 2015”),当然因为ES6中有一些非常重要的功能(它很容易是JavaScript最大的更新),那些将会到来在供应商的浏览器版本中,它们一片混乱。 与此同时,虽然并非所有功能都可以通过转换在今天使用,但您可以在ES6中编写代码然后将其转换为ES5。 如果您搜索“ES6 transpiler”,您会找到几个。
是否为JavaScript提供了稳定的浏览器功能?
环顾四周看起来有一个标准的ECMA-262。 那正确吗?
这对于JavaScript来说是正确的(上图),但对于其他事情,它更多的是 ,它远远超出了HTML。 它也是各种 。
由于两个主要原因,事情比五年前好多了 :
浏览器供应商在建立浏览器应该做的标准方面比以往任何时候都更加合作,从到再到以及其他一些东西。
微软已经认真努力使IE符合标准。 IE9在标准符合性方面是一个比IE8好得多的浏览器,IE10更好,IE11仍然更好。
一些有用的参考:
2楼
见
Javascript有一些标准(称为ECMAScript),浏览器或多或少地实现它。 然而,语言本身只是你需要的一小部分,以使一些有用的东西。 DOM API不太标准,许多开发人员使用jQuery或其他框架来处理不一致性。
3楼
是的..所有浏览器都使用标准化的javascript ..但有一些浏览器支持的功能,而不是少数...
示例:实现AJAX的方法还取决于您使用的浏览器
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
类似地还有像Event这样的其他函数: chrome和firefox支持INPUT但IE不支持,所以在使用特定的javascript函数之前我们必须考虑浏览器的javascript兼容性。
欲了解更多信息: :