Attr: namespaceURI プロパティ

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

namespaceURIAttr インターフェイスの読み取り専用プロパティで、この属性の名前空間 URI を返し、この要素が名前空間にない場合は null を返します。

名前空間 URI は Attr の作成時に設定され、変更することができません。 名前空間付きの属性は、 Element.setAttributeNS() で作成することができます。

メモ: 属性は、装着されている要素から名前空間を継承しません。 属性に明示的に名前空間が与えられなかった場合は、名前空間なしになります。

ブラウザーは名前空間の検証そのものは行いませんし、強制もしません。必要な検証を行うのは JavaScript アプリケーションに任されています。また、名前空間接頭辞は一度特定の属性ノードに関連づけられると、変更することができないので注意してください。

文字列で、この属性の名前空間 URI が入ります。この要素が名前空間にない場合は null を返します。

次の例は、HTML 要素と SVG 要素の場合で、接頭辞つきの属性の結果を示しています。 HTML は名前空間を扱わないので、この場合、常に null を返します。 SVG 要素の場合は、 XML の名前空間 URI である http://www.w3.org/XML/1998/namespace を返します。

HTML コンテンツ

html
<svg xml:lang="en-US" class="struct" height="1" width="1">Click me</svg>
<label xml:lang="en-US" class="struct"></label>

<p>
  <button>&lt;svg&gt; の値を表示</button>
  <button>&lt;label&gt; の値を表示</button>
</p>

<p>
  <code>xml:lang</code> 属性の名前空間 URI:
  <output id="result">なし。</output>
</p>

JavaScript コンテンツ

js
const elements = document.querySelectorAll(".struct");
const buttons = document.querySelectorAll("button");
const outputEl = document.querySelector("#result");

let i = 0;
for (const button of buttons) {
  const element = elements[i];
  button.addEventListener("click", () => {
    const attribute = element.attributes[0];
    outputEl.value = attribute.namespaceURI;
  });
  i++;
}

結果

仕様書

Specification
DOM Standard
# dom-attr-namespaceuri

ブラウザーの互換性

BCD tables only load in the browser

関連情報