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)仅在初始图像加载时触发它。
这就是为什么有大型表格显示不同浏览器行为的网站,以及为什么我们仍然需要在不同的浏览器上进行积极测试的原因。