0
点赞
收藏
分享

微信扫一扫

JavaScript程序设计-简介


文档对象模型(DOM, Document Object Model)是针对XML但经过扩展用于HTML的应用程序编程接口API。DOM把整个页面映射为一个多层节点结构。HTML或XML页面中的每个组成部分都是某种类型的节点,这些节点又包含着不同类型的数据。

DOM1级(DOM Level 1)由两个模块组成:DOM核心(DOM Core)和DOM HTML。DOM核心规定如何映射基于XML的文档结构,以便简化对文档中任意部分的访问和操作。DOM HTML模块在DOM核心的基础上加以扩展,添加了针对HTML的对象和方法。

如果说DOM1级的目标主要是映射文档的结构,那么DOM2级在原来DOM基础上又扩充了(DHTML一直都支持的)鼠标和用户界面事件、范围、遍历(迭代DOM文档的方法)等细分模块,而且通过对象接口增加了对CSS(Cascading Style Sheets,层叠样式表)的支持。DOM1级中的DOM核心模块也经过扩展开始支持XML命名空间。DOM2级引入下列新模块,也给出了众多新类型和新接口的定义。

  • DOM视图(DOM Views):定义了跟踪不同文档(例如,应用CSS之前和之后的文档)视图的接口
  • DOM事件(DOM Events):定义了事件和事件处理的接口
  • DOM样式(DOM Style):定义了基于CSS为元素应用样式的接口
  • DOM遍历和范围(DOM Traversal and Range):定义了遍历和操作文档树的接口
    DOM3级进一步扩展了DOM,引入了以统一方式加载和保存文档的方法-在DOM加载和保存(DOM Load and Save)模块中定义;新增了验证文档的方法-在DOM验证(DOM Validation)模块中定义。DOM3级也对DOM核心进行了扩展,开始支持XML 1.0规范,涉及XML Infoset、XPath和XML Base。

浏览器对象模型(BOM, Browser Object Model)
开发人员使用BOM可以控制浏览器显示的页面以外的部分。而BOM真正与众不同的地方是它作为JavaScript实现的一部分但却没有相关的标准。这个问题在HTML5中得到解决,HTML5致力于把很多BOM功能写入正式规范。从根本上讲,BOM只处理浏览器窗口和框架;但人们习惯上把所有针对浏览器的JavaScript扩展作为BOM的一部分。

  • 弹出新浏览器窗口的功能
  • 移动、缩放和关闭浏览器窗口的功能
  • 提供浏览器详细信息的navigator对象
  • 提供浏览器所加载页面的详细信息的location对象
  • 提供用户显示器分辨率详细信息的screen对象
  • 对cookies的支持
  • 像XMLHttpRequest和IE的ActiveXObject这样的自定义对象
    由于没有BOM标准可以遵循,因此每个浏览器都有自己的实现。虽然也存在一些事实标准,例如要有window对象和navigator对象等,但每个浏览器都会为这两个对象乃至其他对象定义自己的属性和方法。现在有了HTML5,BOM实现的细节有望朝兼容性越来越高的方向发展。

HTML 4.01为<script>定义了下列6个属性:

  • async:可选。表示应该立即下载脚本,但不应该妨碍页面中的其他操作,比如下载其他资源或等待加载其他脚本。只对外部脚本文件有效。
  • charset:可选。表示通过src属性指定的代码的字符集。由于大多数浏览器会忽略它的值,因此这个属性很少有人用。
  • defer:可选。表示脚本可以延迟到文档完全被解析和显示之后再执行。只对外部脚本文件有效。IE7及更早版本对嵌入脚本也支持这个属性。
  • language:已废弃。原来用于表示编写代码使用的脚本语言。大多数浏览器会忽略这个属性,因此也没有必要再用了。
  • src:可选。表示包含要执行代码的外部文件。
  • type:可选。可以看成是language的替代属性;表示编写代码使用的脚本语言的内容类型(也称为MIME类型)。虽然text/javascript和text/ecmascript都已经不被推荐使用,但人们一直以来使用的都还是text/javascript。实际上,服务器在传送JavaScript文件时使用的MIME类型通常是application/x-javascript,但在type中设置这个值却可能导致脚本被忽略。另外,在非IE浏览器中还可以使用以下值:application/javascript和application/ecmascript。考虑到约定俗称和最大限度的浏览器兼容性,目前type属性的值依旧还是text/javascript。不过,这个属性并不是必需的,如果没有指定这个属性,则其默认值仍为text/javascript。

使用<script>元素的方式有两种:直接在页面中嵌入JavaScript代码包含外部JavaScript文件。如果在文档的<head>元素中包含所以JavaScript文件,意味着必须等到全部JavaScript代码都被下载、解析和执行完成后,才能开始呈现页面的内容(浏览器在遇到<body>标签时才开始呈现内容)。为了避免这个问题,一般都把JavaScript引用放在<body>元素中页面内容的后面,这样,在解析包含的JavaScript代码之前,页面的内容将全部呈现在浏览器中。


举报

相关推荐

0 条评论