JavaScript DOM API 的文档在哪里可以找到?

34

我是一名C/C++程序员,目前在学习一些Javascript代码。但我遇到了一个问题,就是无法找到有关浏览器中可用的标准Javascript库的文档。

具体来说,我正在为使用new Image()创建的HTMLImageElement设置一个onload回调函数。我还想了解关于src属性的内容,因为它具有非标准的行为——当该属性被赋值时,图片将重新加载。

Mozilla在这里提供了一些相关属性的基本文档:https://developer.mozilla.org/en/DOM/Image。这里没有文档,只有属性列表。没有提及onload属性,src属性被列出,但没有详细说明。

MSDN提供了更好的文档:http://msdn.microsoft.com/en-us/library/cc197055(VS.85).aspx

我的问题是:'标准文档在哪里?'Image()是全局变量还是window全局对象的属性?是谁编写了windowdocument的API?是否有标准,还是每个浏览器都只是互相抄袭?


31
欢迎来到地狱。 - Roatin Marth
5个回答

45

DOM实际上是JavaScript的一个独立部分。DOM可以从其他语言中访问,例如IE中的VBScript。像Java、Python、PHP等通用编程语言也有自己的非基于浏览器的DOM库。

DOM核心中包含适用于HTML和一般XML文档的基本DOM操作;HTML文档具有在DOM HTML中定义的额外方法。这些是W3定义的最新支持“级别”;并非所有浏览器都支持DOM 3级核心中的所有内容。但DOM Level 1 Core基本上是稳定的。

令人困惑的是,DOM HTML已经进一步发展,但不在其自身的DOM规范中。相反,它是HTML5的一部分。这标准化了许多已经被广泛支持的扩展,如innerHTML,并添加了一堆尚未广泛实现(并且可能在文档标准化之前更改)的内容。

DOM只是文档对象模型:它指定了document对象内的内容。它不指定其他浏览器功能,例如window的内容。浏览器对象模型(BOM)以前没有标准化;HTML5正在首次努力对其进行适当的文档化。

HTML5还规定了之前未标准化的浏览器对象模型(BOM)的部分内容。例如与document内容无直接关联的window等内容。

总之,没有一个单一的文档可以告诉你有关Web脚本中可用的所有方法和属性的信息。某一天,DOM Core加上HTML5将覆盖所有内容,但是今天HTML5包含了许多您不能依赖的内容,即使按照标准文件的标准来看,也不是最易读的指南。所以,是的,恐怕您需要继续查看MDC和MSDN以获取流行支持。

'Image'是全局变量,还是'window'全局对象的属性?

Image被HTML5规定为window对象的成员,作为全局上下文,允许您将其称为Image...虽然这并不完全等同于成为全局变量,但对于大多数人来说足够接近。

它是一个构造函数,返回实现HTMLImageElement接口(来自DOM Level 1 HTML,扩展在HTML5中)的DOM对象。它最初在Netscape 3.0中引入,作为预加载图像的机制;已经创建的图像可以从document.images中访问以更改它们的src。今天,new Image()document.createElement('img')没有任何区别。

我也想了解关于“src”属性的内容,因为它具有非标准行为-当该属性被分配时,图像将被重新加载。 好吧,图片不一定会重新加载,但这可能会导致某些浏览器上触发“load”事件。不幸的是,这在标准化方面并不统一(就我所见,即使在HTML5中也是如此)。IE、Firefox和Opera在每个“src”设置上都会触发“load”(即使未更改“src”),而WebKit(Chrome/Safari)仅在初始图像加载时触发它。 这就是为什么有大型表格显示不同浏览器行为的网站,以及为什么我们仍然需要在不同的浏览器上进行积极测试的原因。

13

5
对于新手来说,这将有助于理解你正在处理的内容,并将以下概念区分开来:
  • Javascript(一种用于访问DOM的语言,其他脚本语言也可以使用),

  • HTML或XML文档(构成网页基础的标记语言),

  • 以及DOM(文档模型,作为API提供服务,允许你操作文档的结构和内容)。

http://css-tricks.com/dom/

它还链接到这些信息性文档:

W3C:什么是文档对象模型?
MDN:介绍-文档对象模型
维基百科:文档对象模型

了解DOM在历史背景下的发展也有助于理解其结构以及如何使用它,以上链接也涵盖了此内容。


3

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接