2

明确你面临的挑战:不同的浏览器

  • 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描述的是一种理想的状态,可能和实际有所区别。

有用的链接


zhangwang
7.9k 声望1.8k 粉丝

前端,摄影,阅读,好奇