IE中的JavaScript与现代浏览器(例如Firefox)中的JavaScript之间的主要差异可以归因于CSS /(X)HTML跨浏览器差异的相同原因。过去,没有实际的标准。IE / Netscape / Opera进行了一场争夺地盘的战争,实现了大多数规范,但同时也省略了一些规范,并制定了专有规范以获取彼此的优势。我可以继续讲下去,但让我们跳到IE8的发布:多年来一直避免/嘲笑JavaScript,并且随着FF的兴起和对Webcomm的蔑视,IE选择将精力主要集中在推进CSS从IE6上。基本上没有DOM支持。IE8的DOM支持也可能是IE6,它于2001年推出。..因此IE的DOM支持比现代浏览器落后了近十年。如果您在布局引擎中存在JavaScript差异,那么最好的方法是像对待CSS问题一样来进行攻击。定位到该浏览器。不要使用浏览器嗅探,使用功能检测来嗅探您的浏览器/它对DOM的支持程度。
JScript不是IE自己的ECMAScript实现;JScript是IE对Netscape JavaScript的回答,两者均早于ECMAScript出现。
就脚本元素上的类型属性而言,type =“ text / javascript”是默认标准(至少在HTML5中如此),因此除非脚本不是JavaScript,否则您永远不需要类型属性。
至于IE不支持innerHTML ... innerHTML是IE发明的,如今仍不是DOM标准。其他浏览器也采用了它,因为它很有用,这就是为什么您可以跨浏览器使用它。对于动态更改表,MSDN说:“由于表需要特定的结构,因此表和tr对象的innerText和innerHTML属性是只读的。” 我不知道最初多少是正确的,但是很明显,现代浏览器在处理表布局的复杂性时已经弄清楚了。
我强烈建议阅读JavaScript上的PPK
杰里米·基思(Jeremy Keith)的DOM脚本
道格拉斯·克罗克福德(Douglas Crockford)的JavaScript:The Good Parts
和克里斯蒂安·海尔曼(Christian Hellman)的《使用DOM脚本和Ajax的Beginning JavaScript》,以更好地掌握JavaScript。
就Frameworks / Libraries而言,如果您还不太了解JavaScript,则应避免使用它们。2年前,我陷入了jQuery陷阱,尽管能够实现宏伟的壮举,但我从未学过关于正确编码JavaScript的东西。事后看来,jQuery是一个非常棒的DOM工具包,但是我未能学习适当的闭包,原型继承等,不仅使我的个人知识退缩,而且由于我不知道自己在做什么,我的工作开始受到巨大的性能影响。
JavaScript是浏览器的语言;如果您是客户端/前端工程师,那么命令JavaScript至关重要。Node.js带来了JavaScript的全面发展,我看到它的开发每天都在飞速发展。服务器端JavaScript将在不久的将来成为标准。我提到这一点是为了进一步强调JavaScript现在和将来的重要性。
JavaScript将比Rails引起更多的轰动。
祝脚本编写愉快!