Javascript中的DOM2和DOM3(一)

321 阅读2分钟

这是我参与2022首次更文挑战的第21天,活动详情查看:2022首次更文挑战

DOM2

DOM2中node类型特定于命名空间的属性有localName意思是不包含命名空间前缀的节点名。prefix意思是命名空间前缀,如果没有指定,则会为null。namespaceURI意思是节点的命名空间URL,如果没有指定,则会为null。

DOM2中document类型上的命名空间的方法有getELementByTagNameNS意思是返回指定命名空间namespaceURI 中所有标签名为tagName的元素的NodeList。createElementNS意思是给定的标签名tagName创建指定命名空间namespaceURI的一个元素。createAttributeNS意思是给定的属性名attributeName创建指定命名空间namespaceURI的一个新属性。

DOM2中element的新增方法有getAttributeNS用来取得指定命名空间namespaceURI中名为localName的属性。getAttributeNodeNS用来取得指定命名空间namespaceURI中名为localName的属性节点。hasAttributeNS用来表示元素中是否有命名空间namespaceURI下名为localName的属性,返回值是布尔值。removeAttributeNS用来删除指定命名空间namespaceURI中名为localName的属性。setAttributeNs用来设置指定命名空间namespaceURI中名为qualifiedName的属性为value。setAttributeNodeNS用来为元素设置或者添加包含命名空间信息的属性节点attNode。除了setAttributeNodeNS之外,其他方法与DOM1中对应的方法几乎相同。

DOM2中DocumentType中有3个属性,分别为publicIdsystemIdinternalSubset

console.log(document.doctype.publicId);
console.log(document.doctype.systemId);

DOM2中我们需要注意的是跨源访问子内嵌窗格的document对象会受到安全限制。如果内嵌窗格中加载了不同域名(或子域名)的页面,或者该页面使用了不同协议,则访问其document对象会抛出错误。

DOM3

DOM3中的命名空间的方法有lookupPrefix意思是返回给定namespaceURI的前缀。lookupNamespaceURI意思是返回给定prefix的命名空间URI。isDefaultNamespace意思表示的是namespaceURI是否为节点的默认命名空间,返回值为布尔值。

DOM3中可以用isSameNodeisEqualNode方法来比较节点,如果这个节点和接收的节点是相同的,那么返回值是true。

let x = document.createElement("div");
x.setAttribute("class", "wrap");
let y = document.createElement("div");
y.setAttribute("class", "wrap");
console.log(x.isSameNode(x)) // true
console.log(x.isEqualNode(y)) // true
console.log(x.isSameNode(y)) // false

DOM3中我们还可以通过setUserData方法给DOM节点附加额外的数据方法,可以接收3个参数,分别为键、值、处理函数。这个方法的处理函数会在包含数据的几点被复制,删除或者重命名。处理函数可以接收5个参数,分别为操作类型的数值、数据的键、数据的值、源节点和目标节点。当我们删除节点时,源节点为 null。除复制外,目标节点都为null。