此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in English Always switch to English

Node:isDefaultNamespace() 方法

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨2015年7月⁩.

Node 接口的 isDefaultNamespace() 方法接受一个命名空间 URI 作为参数,并返回一个布尔值。如果该命名空间是该节点的默认命名空间,则返回 true,否则返回 false。要获取默认命名空间,可以向 Node.lookupNamespaceURI() 传入 null

语法

js
isDefaultNamespace(namespaceURI)

参数

namespaceURI

一个表示要检查的命名空间的字符串。空字符串等同于 null

备注:namespaceURI 不是可选参数,但它可以为 null

返回值

一个布尔值 truefalse,用于指示传入的参数是否为默认命名空间。其效果等同于执行 node.lookupNamespaceURI(null) === namespaceURI

示例

备注:此示例运行在一个 HTML 文档中,其中 xmlns: 属性会被忽略(xmlns:xlink 除外)。Firefox 会将所有元素的命名空间 URI 设置为 null,而 Chrome 和 Safari 则会正确地为 HTML、SVG 和 MathML 元素设置默认命名空间 URI。如果你希望进行更有意义的测试,可以打开一个独立的 SVG 文档,并在其上下文中执行脚本。

html
<div class="hidden">
  <div>测试 HTML 元素</div>
  <svg>
    <text>测试 SVG 元素</text>
  </svg>
  <svg xmlns:xlink="http://www.w3.org/1999/xlink" id="with-xlink">
    <text>带 xlink 的测试 SVG 元素</text>
  </svg>
  <math>测试 MathML 元素</math>
</div>

<table>
  <thead>
    <tr>
      <th><code>namespaceURI</code></th>
      <th><code>&lt;div&gt;</code></th>
      <th><code>&lt;svg&gt;</code></th>
      <th><code>&lt;svg xmlns:xlink&gt;</code></th>
      <th><code>&lt;math&gt;</code></th>
    </tr>
  </thead>
  <tbody></tbody>
</table>
js
const htmlElt = document.querySelector("div");
const svgElt = document.querySelector("svg");
const svgEltXLink = document.querySelector("#with-xlink");
const mathElt = document.querySelector("math");

const tbody = document.querySelector("tbody");

for (const uri of [
  "http://www.w3.org/2000/xmlns/",
  "http://www.w3.org/XML/1998/namespace",
  "http://www.w3.org/1999/xhtml",
  "http://www.w3.org/2000/svg",
  "http://www.w3.org/1999/xlink",
  "http://www.w3.org/1998/Math/MathML",
  "",
  null,
]) {
  const row = document.createElement("tr");
  tbody.appendChild(row);
  row.appendChild(document.createElement("td")).textContent =
    JSON.stringify(uri);
  for (const el of [htmlElt, svgElt, svgEltXLink, mathElt]) {
    console.log(el, uri, el.isDefaultNamespace(uri));
    row.appendChild(document.createElement("td")).textContent = String(
      el.isDefaultNamespace(uri),
    );
  }
}

规范

Specification
DOM
# dom-node-isdefaultnamespace

浏览器兼容性

参见