本系列的博客是由本人在阅读《JavaScript DOM编程艺术》一书过程中做的总结。前面的偏理论部分都是书中原话,觉得有必要记录下来,方便自己翻阅,也希望能为读到本博客的人提供一些帮助,所以

如果您也看过这本书,希望不要喷小的“抄袭”,其实我也懒得敲这些文字也想简单粗暴地上代码,但是只有实践没有理论不容易自己理解,为避免误导,该“抄”的地方还是要“抄”的,哈哈~~

一、JavaScript的起源

JavaScript是Netscape公司和Sun公司合作开发的。在JavaScript出现之前,Web浏览器不过是一种能够显示超文本文档的简单的软件。而在JavaScript出现之后,网页的交互性得到了很大的改善。

JavaScript的第一个版本,即JavaScript1.0出现在1995年推出的Netscape Navigator2浏览器中。

在JavaScript1.0发布时,Netscape Navigator主宰着市场,IE则扮演着追赶者的角色。微软在推出IE3的时候发布了自己的VBScript语言,同时以Jscript为名发布了JavaScript的第一个版本,以此

很快跟上了Netscape的步伐。面对微软的竞争,Netscape和Sun公司联合ECMA(欧洲计算机制造协会)非JavaScript语言进行了标准化。于是出现了ECMAScript语言,这是同一个语言的另一个名字。

虽说ECMAScript这个名字没有流行开来,但人们现在讨论的JavaScript实际上就是ECMAScript。

到了1996年,JavaScript、ECMAScript和JScript已经站稳了脚跟。Netscape和微软都在各自的浏览器里不同程度地支持JavaScript1.1。

二、DOM

本书主要讲的内容就是DOM编程艺术,所以先来对DOM进行一个大概的了解。简单的说,DOM是一套对文档的内容进行抽象和概念化的方法。DOM是Document Object Model的简写,即文档对象模型,

所以望文生义就能猜到这是将文档视为对象的一种方法。既然是对象,就应该有属性,所以JavaScript的DOM编程其实就是通过文档对象获取属性并对其进行操作。

三、浏览器战争

1、DHTML

DHTML是“Dynamic HTML”(动态HTML)的简称。DHTML并不是一项新技术,而是描述HTML、CSS和JavaScript技术组合的术语。其意义包含下面三个方面:

(1) 利用HTML把网页标记为各种元素

(2) 利用CSS设置元素样式和显示的位置

(3) 利用JavaScript实时地操控页面和改变样式

2、浏览器之间的冲突

Netscape公司的DOM使用了专有元素,这些元素称为层Layer。层有唯一的ID,JavaScript需要像下面这样引用它们:

document.layers[‘element’]

而在IE中这个元素要像下面这样引用:

document.all[‘element’]

像这样的区别还有很多,这就导致开发人员在编写DOM脚本代码时必须知道该脚本将运行在何种浏览器上。同时,为了确保能够正确地向不同的浏览器提供与之相应的代码,还要写一些代码探查在

客户端运行的浏览器是哪种。

四、定制标准

就在浏览器厂商们以DOM为开发武器展开营销大战的同时,W3C已经结合大家的优点推出了一个标准化的DOM。令人开心的是,浏览器厂商们也能抛开彼此之间的敌意,携手W3C制定新的标准,

并与1998年10月完成了”第一级DOM“。浏览器厂商们感兴趣的只不过是通过JavaScript控制网页的具体方法,而W3C推出的标准化DOM则可以让任何一种程序设计语言对使用任何一种标记语言编写

出来的任何一份文档进

行操控。

1、浏览器以外的考虑

DOM是一种API(应用编程接口),即一种得到各方共同认可的基本约定,例如摩尔斯码、国际时区和化学元素周期表一样,都是不同科学领域的标准。所谓无规不成方圆,DOM就是这样一个标准,开

发人员必须遵循这一套标准开发。

W3C对DOM的定义是:”一个与系统平台和编程语言无关的接口,程序和脚本可以通过这个接口动态地访问和改变文档的内容、结构和样式“。W3C推出的标准化DOM,在独立性和适用范围等诸多方面

都远远超出了浏览器厂商们推出的各种专有的DOM,因此才成为编程语言领域的一种标准。

2、浏览器战争的结局

浏览器战争影响最大的是网站设计人员。跨浏览器开发是他们的噩梦,除了JavaScript的差异之外,Netscape和IE在对CSS的支持上也有很大的差别,导致编写同时支持这两种浏览器的样式成了一种

黑色艺术。因此浏览器厂商们的这种行为遭到人们的激烈的反对,一个名为Web标准计划的小组应用而生,鼓励浏览器制造商们采用W3C制定和推荐的各项标准,也就是在浏览器厂商们的帮助下得以起草

和完善的那些标准,这才使浏览器产品对web标准的支持得到了极大的改善。

3、崭新的起点

如今的浏览器市场已经跟以前的完全不一样。首先Netscape已经不复存在,而一些新秀又迅速崛起,到目前,市场上比较主流的浏览器有Chrome、Firefox、Opera和IE.而且几乎所有的浏览器里都

内置了对DOM的支持,终于实现了“编写一次,到处运行”的梦想,只要遵循DOM标准,开发人员就可以放心大胆地去做。

以上就是第一章的内容,通过介绍因为JavaScript脚本引起的浏览器大战,引出W3C提出的行业级DOM标准,进一步介绍DOM的含义,最后又回归到浏览器大战的结局上说明了W3C的DOM标准之

重要性,可见是浏览器促进了JavaScript语言的进步,所以在学习JavaScript之前要对浏览器有一定的了解,当然,我说的是浏览器的底层技术,比如解析、识别语言等。

JavaScript DOM编程艺术第一章:JavaScript简史的更多相关文章

  1. JavaScript DOM编程艺术-第一章

    发现基础不是很好,补习一下.37买了2本书(dom编程和高级程序设计). 以前读书总是自己勾勾画画,有点没意思.现在写下来,说不定会成为传世经典.哈哈...........随便扯扯淡. 第一天(201 ...

  2. [书籍翻译] 《JavaScript并发编程》第一章 JavaScript并发简介

    > 本文是我翻译<JavaScript Concurrency>书籍的第一章,该书主要以Promises.Generator.Web workers等技术来讲解JavaScript并 ...

  3. Javascript的一些技巧(《Javascript DOM编程艺术》、Javascript语言精粹)

    1.什么时候用布尔变量当变量 假设你需要一个这样的变量:我在睡觉——存为一个值:我没在睡觉——存为另一个值. 一般的做法: var stateOne="睡觉",stateTwo=& ...

  4. [书籍翻译] 《JavaScript并发编程》 第二章 JavaScript运行模型

    本文是我翻译<JavaScript Concurrency>书籍的第二章 JavaScript运行模型,该书主要以Promises.Generator.Web workers等技术来讲解J ...

  5. 《JavaScript Dom 编程艺术》读书笔记-第4章

    我的前端入门第一本书是<JavaScript Dom 编程艺术>,网上查找资料发现前端的入门推荐书籍最受好评的就是这本和<JavaScript 高级程序设计>了.之所以先选这本 ...

  6. 《JavaScript DOM 编程艺术》 学习笔记

    目录 <JavaScript DOM 编程艺术> 学习笔记 第一章 js简史 第二章 js语法 准备工作 语法 第三章 DOM DOM中的D DOM中的O DOM中的M 第四章 js图片库 ...

  7. 读书笔记:JavaScript DOM 编程艺术(第二版)

    读完还是能学到很多的基础知识,这里记录下,方便回顾与及时查阅. 内容也有自己的一些补充. JavaScript DOM 编程艺术(第二版) 1.JavaScript简史 JavaScript由Nets ...

  8. JavaScript DOM编程艺术(第2版)的简单总结

    介绍 JavaScript DOM编程艺术(第2版)主要讲述了 JavaScript.DOM 和 HTML5 的基础知识,着重讲述了 DOM 编程,并通过几个实例演示了具有专业水准的网页开发. 下面介 ...

  9. JavaScript DOM 编程艺术·setInterval与setTimeout的动画实现解析

    先贴上moveElement()函数的大纲,为了方便观看,删了部分代码,完整版粘到文章后面. function moveElement(elementID,final_x,final_y,interv ...

随机推荐

  1. password安全之动态盐

    首先,我们看看什么是盐:http://zh.wikipedia.org/zh/%E7%9B%90_%28%E5%AF%86%E7%A0%81%E5%AD%A6%29 ,再MD5是d16e970d6e5 ...

  2. JVM自动内存管理学习笔记

    对于使用 C.C++ 的程序员来说,在内存管理领域,他们既是拥有最高权力的皇帝又是从事最基础工作的劳动人民——拥有每一个对象的“所有权”,又担负着每一个对象生命开始到终结的维护责任.对于 Java 程 ...

  3. iOS开发——UI_swift篇&TableView自定义聊天界面

    TableView自定义聊天界面   1,下面是一个放微信聊天界面的消息展示列表,实现的功能有: (1)消息可以是文本消息也可以是图片消息 (2)消息背景为气泡状图片,同时消息气泡可根据内容自适应大小 ...

  4. iOS开发——数据解析Swift篇&简单json数据处理

    简单json数据处理 //loadWeather var url = NSURL(string: "http://www.weather.com.cn/adat/sk/101240701.h ...

  5. iOS开发——UI篇OC篇&初始化图片方式

    初始化图片方式 一.读取图片 1.从资源(resource)读取 [cpp] view plaincopyprint?   UIImage* image=[UIImage imageNamed:@&q ...

  6. 如何在VS C++中高亮用户自定义关键字

    这篇文章主要参考一篇英文博客,具体步骤如下: 1.在VS中找到msdev.exe所在的目录,一般在...\Microsoft Visual Studio.NET\Common7\IDE\devnev. ...

  7. CentOS6.5 一键部署运行环境shell脚本

     ################################################## #  CentOS6.5                                     ...

  8. iOS类别(category)不能添加成员变量但是可以添加属性的问题

    类别不需要介绍了把,网上一大堆(利用Objective-C的动态运行时分配机制,可以为现有的类添加新方法,这种为现有的类添加新方法的方式称为类别catagory,他可以为任何类添加新的方法,包括那些没 ...

  9. python(5)–random模块及验证码

    1. random.random()      随机小数 >>> random.random() 0.6633889413427193 2. random.randint(1,9)  ...

  10. 给jdk写注释系列之jdk1.6容器(12)-PriorityQueue源码解析

    PriorityQueue是一种什么样的容器呢?看过前面的几个jdk容器分析的话,看到Queue这个单词你一定会,哦~这是一种队列.是的,PriorityQueue是一种队列,但是它又是一种什么样的队 ...