
2025-02-25 日报 Day108

今日的鸡汤
慢慢来,
好戏都在烟火里。
今日学习内容
1、JS 红皮书 P460-475 第十六章:DOM2和DOM3
今日笔记
1、DOM1(DOM Level 1)主要定义了 HTML 和 XML 文档的底层结构。DOM2(DOM Level 2)和DOM3(DOM Level 3)在这些结构之上加入更多交互能力,提供了更高级的 XML 特性。实际上,DOM2和 DOM3 是按照模块化的思路来制定标准的,每个模块之间有一定关联,但分别针对某个 DOM 子集。这些模式如下所示。
DOM Core:在 DOM1 核心部分的基础上,为节点增加方法和属性。
DOM Views:定义基于样式信息的不同视图。
DOM Events:定义通过事件实现 DOM 文档交互。
DOM Style:定义以编程方式访问和修改 CSS 样式的接口。
DOM Traversal and Range:新增遍历 DOM 文档及选择文档内容的接口。
DOM HTML:在 DOM1 HTML 部分的基础上,增加属性、方法和新接口。
DOM Mutation Observers:定义基于 DOM 变化触发回调的接口。这个模块是 DOM4 级模块,用于取代 Mutation Events。
2、XML命名空间:
在节点使用命名空间前缀的情况下,nodeName 等于 prefix + “:” + localName。比如下面这个例子:
1 | <html xmlns="http://www.w3.org/1999/xhtml"> |
其中的元素的 localName 和 tagName 都是”html”,namespaceURL 是”http://www.w3.org/1999/xhtml",而 prefix 是 null。对于<s:svg>元素,localName 是”svg”,tagName 是”s:svg”,namespaceURI 是”https://www.w3.org/2000/svg",而 prefix 是”s”。
DOM2 HTML 给 HTMLIFrameElement(即
1 | let iframe = document.getElementById("myIframe"); |
contentDocument 属性是 Document 的实例,拥有所有文档属性和方法,因此可以像使用其他HTML 文档一样使用它。还有一个属性 contentWindow,返回相应窗格的 window 对象,这个对象上有一个 document 属性。所有现代浏览器都支持 contentDocument 和 contentWindow 属性。
注意 跨源访问子内嵌窗格的 document 对象会受到安全限制。如果内嵌窗格中加载了不同域名(或子域名)的页面,或者该页面使用了不同协议,则访问其 document 对象会抛出错误。
3、样式: 外部样式表(通过元素)、文档样式表(使用元素)和元素特定样式(使用style属性)。
- 存取元素样式: 任何支持 style 属性的 HTML 元素在 JavaScript 中都会有一个对应的 style 属性。这个 style 属性是 CSSStyleDeclaration 类型的实例,其中包含通过 HTML style 属性为元素设置的所有样式信息,但不包含通过层叠机制从文档样式和外部样式中继承来的样式。HTML style 属性中的 CSS 属性在 JavaScript style 对象中都有对应的属性。因为 CSS 属性名使用连字符表示法(用连字符分隔两个单词,如 background-image),所以在 JavaScript 中这些属性必须转换为驼峰大小写形式(如backgroundImage)。下表给出了几个常用的 CSS 属性与 style 对象中等价属性的对比。
CSS属性 JavaScript属性 background-image style.backgroundImage color style.color display style.display font-size style.fontSize font-family style.fontFamily
DOM2 Style 规范也在 style 对象上定义了一些属性和方法。这些属性和方法提供了元素 style 属性的信息并支持修改,列举如下。
cssText,包含 style 属性中的 CSS 代码。
length,应用给元素的 CSS 属性数量。
parentRule,表示 CSS 信息的 CSSRule 对象(下一节会讨论 CSSRule 类型)。
getPropertyCSSValue(propertyName),返回包含 CSS 属性 propertyName 值的 CSSValue对象(已废弃)。
getPropertyPriority(propertyName),如果 CSS 属性 propertyName 使用了!important则返回”important”,否则返回空字符串。
getPropertyValue(propertyName),返回属性 propertyName 的字符串值。
item(index),返回索引为 index 的 CSS 属性名。
removeProperty(propertyName),从样式中删除 CSS 属性 propertyName。
setProperty(propertyName, value, priority),设置 CSS 属性 propertyName 的值为value,priority 是”important”或空字符串。
1 | myDiv.style.cssText = "width: 25px; height: 100px; background-color: green"; |
4、操作样式表: CSSStyleSheet 类型表示 CSS 样式表,包括使用元素和通过