明确你面临的挑战:不同的浏览器
Firefox已经其它一些知名度较低的浏览器使用一种称作Gecko的开源引擎;
Safari和Chrome都使用一种叫WebKit的开源渲染引擎,但二者具有不同的JavaScript引擎。Chrome使用Google V8,Safari使用其自有的闭源引擎,由于二者具有相同的渲染引擎,因此它们具有很多相似的特性;
Opera使用一种叫做Presto的闭源引擎;
IE使用一种叫做Trident的闭源引擎,ie6,ie7的该引擎是让人恐惧的,在ie8上稍有改善,在ie9及以后改进很大。
在专业的讨论中Gecko, V8, Webkit经常被提到,Trident, Presto使用较少。
有时候,跨浏览器的开发变得复杂,浏览器根据其支持情况可以被划分为A,B,C三类;
-
A.最新的Firefox, IE, Safari/Chrome
> 支持情况理想;
-
B. Opera以及较新版的主流浏览器
> 支持情况足够好,但是在外观和使用上可能具有一些缺点;
-
C. 老版主流浏览器
> 只支持核心功能
选用现代的DOCTYPE
在学习Html的过程中,你可能已经知道两种渲染模式:标准模式(Standards)和怪异模式(Quirks ),实际上还存在第三种渲染模式“几乎标准模式”(almost standards),可以在这里查看其详细信息。
浏览器通过识别html顶部DOCTYPE的类型选择对应的渲染模式。
对于现代的站点来说,<!DOCTYPE HTML>
是最好的。
这种声明让现代浏览器在标准模式下渲染网页,让老一些的浏览器在几乎标准模式下渲染网页。
值得注意的是,渲染模式的选择不仅关乎html,javascript的一些特性也依赖于渲染模式,尤其是涉及到css盒子以及定位等相关功能时。
样式的应用也是不同的,比如说在ie7上,严格模式时伪类:hover
可以在任何元素上使用,而在非严格模式时,其只能用在链接上。
没使用正确的DOCTYPE会使你的程序出现一些莫名奇妙的问题,记住要使用<!DOCTYPE HTML>
。
合适的学习资源
如何使用合适的参考手册
网上有两大主流的关于JavaScript的手册.
-
一是来自微软的MSDN,这里通常把JavaScript叫做“JScript”
> 在此查看资料时可以在Google里输入类似“RegExp msdn”或“RegExp msdn jscript”这样的语句来搜索。这里适合查询IE相关特性的信息;
-
另一个是Mozilla社区的MDN;
> 在此查看资料时可以在Google里输入类似“RegExp msc”,这里适合查询通用或者火狐相关的特性;
不兼容性
前端开发会碰到很多因夸浏览器而产生的不兼容问题,http://www.quirksmode.org/这个网站可以帮你查询兼容性,当然也可以使用can i use.
对ECMAScript的说明
对Javascript进行详细说明(对语法,基本对象以及算法的正式描述)的语言叫做ECMAScript。
为什么不叫JavaScript
JavaScript这个商标为Oracle(甲骨文)公司拥有(旧为Sun公司拥有,Sun被Oracle收购)选择叫做ECMAScript使得该标准独立于商标所有者。
ECMAScript对JavaScript如何工作进行了详细的描述,它是一个超前的信息源。
我们处于一个不断变化的时代,现在的标准是ES6,但是浏览器还处于不断完善这些功能的过程中;过去的ES5和ES3已被大多主流浏览器所支持。
当你想深入学习JavaScript是如何工作的,ECMAScript是很好的信息源。不过需要注意,其中一些功能可能浏览器当前还不支持。
HTML5
JavaScript是一门通用的语言,这就是为什么ECMAScript只字不提浏览器的问题。
关于这个问题,HTML5里有详细的介绍。
W3.org DOM specifications是一个非常大但是很有价值的地方,可以把他们当做参考。搜索时可以在Google里输入”something site:w3.org”来查找DOM以及事件相关的事情。
不过W3描述的是一种理想的状态,可能和实际有所区别。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。