JavaScript DOM API 记录在哪里? [关闭]

Posted

技术标签:

【中文标题】JavaScript DOM API 记录在哪里? [关闭]【英文标题】:Where is the JavaScript DOM API documented? [closed] 【发布时间】:2011-04-15 16:18:18 【问题描述】:

我是一名 C/C++ 程序员,目前正在使用一些 javascript 代码,但在查找浏览器中可用的标准 Javascript 库的文档时遇到问题。

具体来说,我在htmlImageElement 上设置了一个onload 回调函数,它是用new Image() 创建的。我还想了解 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?有没有标准,还是每个浏览器只是互相抄袭?

【问题讨论】:

欢迎来到地狱。 @Roatin - 感谢您的清理。 【参考方案1】:

DOM 实际上与 JavaScript 是分开的。可以从其他语言访问 DOM,例如 IE 中的 VBScript。 Java、Python、php 等通用编程语言都有自己的非基于浏览器的 DOM 库。

可以在DOM Core 中找到适用于 HTML 和一般 XML 文档的基本 DOM 操作; HTML 文档在DOM HTML 中定义了额外的方法。这些是 W3 定义的最新“级别”支持;并非所有浏览器都支持 DOM Level 3 Core 中的所有内容。但是DOM Level 1 Core 非常可靠。

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

DOM 只是文档对象模型:它指定您在document 对象中获得的内容。它没有指定其他浏览器功能,例如window 的内容。浏览器对象模型 (BOM) 以前是非标准化的; HTML5 正在努力正确地记录它。

HTML5 还指定了以前未标准化的浏览器对象模型 (BOM) 部分。像 window 这样的东西不直接连接到 document 内容。

所有这一切的结果是,没有一个文档可以告诉您有关您在 Web 脚本中可用的方法和属性的所有信息。有一天,DOM Core 加上 HTML5 将涵盖所有内容,但今天 HTML5 包含了很多您无法依赖的内容,即使按照标准文档的标准,它也不是最易读的指南。所以是的,恐怕您将不得不继续查看 MDC 和 MSDN 以获得大众支持。

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

Image 由 HTML5 指定为 window 对象的成员,该对象是全局上下文,允许您将其称为 Image... 这不是相当 em> 与全局变量相同,但对大多数人来说已经足够接近了。

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

我还想了解 'src' 属性,因为它具有非标准行为 - 当分配此属性时,图像会重新加载。

好吧,图像不一定会重新加载,但它可能会导致在某些浏览器上触发 load 事件。不幸的是,这不是标准化的(据我所知,即使在 HTML5 中也是如此)。 IE、Firefox 和 Opera 在每个 src 集合上触发 load(即使 src 未更改),而 WebKit (Chrome/Safari) 仅在初始图像加载时触发它。

这就是为什么有些网站有不同浏览器行为的大表格,以及为什么我们仍然必须在不同的浏览器上积极测试。

【讨论】:

【参考方案2】:

新宠:http://devdocs.io/dom/ (总体而言,Devdocs.io 非常棒,有很多参考资料)

(老)我真的很喜欢这个 DOM 参考:http://krook.org/jsdom/

【讨论】:

【参考方案3】:

对于新手来说,这将真正有助于理解您正在使用的内容并区分以下概念:

Javascript(一种用于访问DOM的语言,也可以使用其他脚本语言),

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

和 DOM(作为 API 的文档模型,允许您操作文档的结构和内容)。

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

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

W3C:What is the Document Object Model? MDN:Introduction - Document Object Model ***:Document Object Model

了解 DOM 在历史背景下的发展方式也有助于理解其结构以及如何使用它,上述链接也涵盖了这一点。

【讨论】:

【参考方案4】:

我猜这个标准是由 W3C 编写的。

http://www.w3.org/TR/REC-DOM-Level-1/

您还可以找到 DOM Level 2 和 3 的标准;)

【讨论】:

【参考方案5】:

我有时会使用javascriptkit,我觉得它非常有用。

【讨论】:

以上是关于JavaScript DOM API 记录在哪里? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript性能优化 DOM编程

JavaScript的理解记录

Javascript操作DOM常用API总结

Javascript操作DOM常用API总结

关于javascript dom扩展:Selector API

JavaScript之DOM树