recursal/MDN huggingface dataset:
BluetoothRemoteGATTCharacteristic: value プロパティ
==============================================

**Experimental:** **これは実験的な機能です。**  
本番で使用する前にブラウザー互換性一覧表をチェックしてください。

読み取り専用プロパティ **`BluetoothRemoteGATTCharacteristic.value`** は、現在キャッシュされているキャラクタリスティックの値を返します。この値は、キャラクタリスティックの値が読まれるか、ノーティフィケーションやインディケーションによって更新されると更新されます。

値
-

現在キャッシュされているキャラクタリスティックの値です。

仕様書
---

| Specification |
| --- |
| Web Bluetooth # dom-bluetoothremotegattcharacteristic-value |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
BluetoothRemoteGATTCharacteristic: properties プロパティ
===================================================

**Experimental:** **これは実験的な機能です。**  
本番で使用する前にブラウザー互換性一覧表をチェックしてください。

読み取り専用プロパティ **`BluetoothRemoteGATTCharacteristic.properties`** は、このキャラクタリスティックのプロパティが格納された `BluetoothCharacteristicProperties` のインスタンスを返します。

値
-

このキャラクタリスティックのプロパティです。

仕様書
---

| Specification |
| --- |
| Web Bluetooth # dom-bluetoothremotegattcharacteristic-properties |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
BluetoothRemoteGATTCharacteristic: stopNotifications() メソッド
===========================================================

**Experimental:** **これは実験的な機能です。**  
本番で使用する前にブラウザー互換性一覧表をチェックしてください。

**`BluetoothRemoteGATTCharacteristic.stopNotifications()`** メソッドは、それに関する活動中のノーティフィケーションが存在しなくなったら `BluetoothRemoteGATTCharacteristic` のインスタンスで解決する `Promise` を返します。

構文
--


```js
stopNotifications()
```

### 引数

なし

### 返値

`Promise` です。

仕様書
---

| Specification |
| --- |
| Web Bluetooth # dom-bluetoothremotegattcharacteristic-stopnotifications |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
BluetoothRemoteGATTCharacteristic: getDescriptor() メソッド
=======================================================

**Experimental:** **これは実験的な機能です。**  
本番で使用する前にブラウザー互換性一覧表をチェックしてください。

**`BluetoothRemoteGATTCharacteristic.getDescriptor()`** メソッドは、指定のディスクリプター UUID に対応する最初の `BluetoothRemoteGATTDescriptor` で解決する `Promise` を返します。

構文
--


```js
getDescriptor(bluetoothDescriptorUUID)
```

### 引数

なし

### 返値

最初の `BluetoothRemoteGATTDescriptor` で解決する `Promise` です。

仕様書
---

| Specification |
| --- |
| Web Bluetooth # dom-bluetoothremotegattcharacteristic-getdescriptor |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
HTMLScriptElement: referrerPolicy プロパティ
=======================================

**`referrerPolicy`** は `HTMLScriptElement` インターフェイスのプロパティで、 `<script>` 要素の `referrerpolicy` とそのスクリプトによって行われるフェッチを反映し、リソースをフェッチする際にどのリファラーを送信するか定義しています。

値
-

文字列です。以下のいずれかです。

`no-referrer`

`Referer` ヘッダーは完全に省略されます。リクエストと共に送信されるリファラー情報はありません。

`no-referrer-when-downgrade`

プロトコルのセキュリティレベルが変わらない場合（例: HTTP→HTTP、HTTPS→HTTPS）にはリファラーとして URL を送信し、セキュリティレベルの低い宛先（例: HTTPS→HTTP）には送信しません。

`origin`

 どのような場合でも、この文書のオリジンだけをリファラーとして送信します。
 文書 `https://example.com/page.html` はリファラーとして `https://example.com/` を送ります。


`origin-when-cross-origin`

同一オリジンリクエストを行う場合は完全な URL を送信し、それ以外の場合は文書のオリジンのみを送信します。

`same-origin`

リファラーは同一サイトオリジンには送信されますが、オリジン間リクエストではリファラー情報が送信されません。

`strict-origin`

プロトコルのセキュリティレベルが変わらない場合（例: HTTPS→HTTPS）だけ、文書のオリジンをリファラーとして送信し、セキュリティレベルの低い宛先（例: HTTPS→HTTP）には送信しないようにします。

`strict-origin-when-cross-origin` (default)

これは、ポリシーが指定されていない場合のユーザーエージェントの既定の動作です。同一オリジンリクエストを行う場合は完全な URL を送信し、プロトコルのセキュリティレベルが変わらない場合はオリジンのみを送信し（例: HTTPS→HTTPS）、セキュリティレベルの低い宛先にはヘッダーを送信しません（例: HTTPS→HTTP）。

`unsafe-url`

 同一オリジンまたはオリジン間リクエストを実行するときに、完全な URL を送信します。このポリシーは、 TLS で保護されたリソースから安全でないオリジンへのオリジンとパスを漏洩します。
 この設定の影響を慎重に検討してください。



**メモ:** 空文字列の値 (`""`) は既定値であると同時に、 `referrerpolicy` が対応していない場合の代替値でもあります。もし `<script>` 要素に `referrerpolicy` が明示的に指定されていない場合には、より高いレベルのリファラーポリシー、つまり文書やドメイン全体に設定されているものを採用することになります。上位のポリシーが利用できない場合、空文字列は `no-referrer-when-downgrade` と同等に扱われます。

例
-


```js
const scriptElem = document.createElement("script");
scriptElem.src = "/";
scriptElem.referrerPolicy = "unsafe-url";
document.body.appendChild(scriptElem);
```

仕様書
---

| Specification |
| --- |
| HTML Standard # dom-script-referrerpolicy |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `HTMLIFrameElement.referrerPolicy`
HTMLScriptElement: supports() 静的メソッド
====================================

**`supports()`** は `HTMLScriptElement` インターフェイスの静的メソッドで、ユーザーエージェントが対応しているスクリプトの種類を機能的に検出するための、単純で一貫したメソッドを提供します。

このメソッドは、ほとんどの現代のブラウザーが対応しているクラシックスクリプトとモジュールスクリプトに対して `true` を返すことが期待されています。

構文
--


```js
HTMLScriptElement.supports(type)
```

### 引数

`type`

 対応しているかどうかを調べるスクリプトの種類を示す文字列リテラルです。
 対応している値は以下の通りで、大文字と小文字が区別されます。


`"classic"`

 クラシックスクリプトが対応しているかどうかをテストします。
 「クラシック」スクリプトとは、モジュールスクリプトより前の通常の、伝統的な JavaScript ファイルのことです。


`"module"`

モジュールスクリプトに対応しているかどうかをテストします。

`"importmap"`

インポートマップに対応しているかどうかをテストします。

`"speculationrules"`

投機ルールが対応し、有効になっているかどうかをテストします。

他の値であれば、このメソッドは `false` を返します。

### 返値

指定されたスクリプトに対応している場合は `true` を、そうでない場合は `false` を返す。

例
-

下記のコードは `HTMLScriptElement.supports()` が定義されているかどうかを調べ、定義されている場合はそれを使用して特定の種類のスクリプトに対応しているかどうかをテストする方法を示しています。


```js
const log = document.getElementById("log");

function checkSupport(type) {
  const result = HTMLScriptElement.supports(type) ? "true" : "false";
  log.textContent += `HTMLScriptElement.supports('${type}') は ${result}\n`;
}

if (typeof HTMLScriptElement.supports === "undefined") {
  log.textContent = "HTMLScriptElement.supports() メソッドに対応していません";
} else {
  // 様々な種類のスクリプトに対応しているかどうかをチェック
  checkSupport("module");
  checkSupport("classic");
  checkSupport("importmap");
  checkSupport("speculationrules");
  // 他の値ならば、このメソッドは false を返す
  checkSupport("anything else");
}
```


```
<textarea id="log" rows="6" cols="80"></textarea>
```

仕様書
---

| Specification |
| --- |
| HTML Standard # dom-script-supports |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `HTMLScriptElement`
* `<script>`
* JavaScript モジュール
* `Worker` コンストラクター
Node: hasChildNodes() メソッド
==========================

**`hasChildNodes()`** は `Node` インターフェイスのメソッドで、この `Node` に子ノードがあるかどうかを示す論理値を返します。

構文
--


```js
hasChildNodes()
```

### 引数

なし。

### 返値

論理値で、このノードに子ノードがあれば `true` を、そうでなければ `false` を返します。

例
-


```js
let foo = document.getElementById("foo");

if (foo.hasChildNodes()) {
  // 'foo.childNodes' で何かを行う
}
```

仕様書
---

| Specification |
| --- |
| DOM Standard # ref-for-dom-node-haschildnodes① |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `Node.childNodes`
Node: lookupPrefix() メソッド
=========================

**`lookupPrefix()`** は `Node` インターフェイスのメソッドで、指定された名前空間 URI に対応する接頭辞があれば、それを含む文字列を返します。ない場合は `null` を返します。
 複数の接頭辞の可能性があれば、最初の接頭辞を返します。

構文
--


```js
lookupPrefix(namespace)
```

### 引数

`namespace`

接頭辞を検索するための名前空間の入った文字列です。

**メモ:** この引数は省略可能ではありませんが、 `null` に設定することはできます。

### 返値

 対応する接頭辞の入った文字列です。見つからなかった場合は `null` になります。
 `namespace` が null または空文字列であった場合、 `lookupPrefix()` は `null` を返します。

このノードが `DocumentType` または `DocumentFragment` であった場合は、　`lookupPrefix()` は常に `null` を返します。

例
-


```html
Prefix for <code>http://www.w3.org/2000/svg</code> on &lt;output&gt;:
<output>未検査</output><br />
Prefix for <code>http://www.w3.org/XML/1998/namespace</code> on &lt;output&gt;:
<output>未検査</output><br />
Prefix for <code>http://www.w3.org/TR/html4/</code> on &lt;output&gt;:
<output>未検査</output><br />
Prefix for <code>https://www.w3.org/1999/xlink</code> on &lt;output&gt;:
<output>未検査</output><br />
Prefix for <code>http://www.w3.org/2000/svg</code> on &lt;svg&gt;:
<output>未検査</output><br />
Prefix for <code>https://www.w3.org/1999/xlink</code> on &lt;svg&gt;:
<output>未検査</output><br />
Prefix for <code>http://www.w3.org/XML/1998/namespace</code> on &lt;svg&gt;:
<output>未検査</output><br />
<svg xmlns:t="http://www.w3.org/2000/svg" height="1"></svg>
<button>結果を確認するにはクリック</button>
```



```js
const button = document.querySelector("button");
button.addEventListener("click", () => {
  const aHtmlElt = document.querySelector("output");
  const aSvgElt = document.querySelector("svg");

  const result = document.getElementsByTagName("output");
  result[0].value = aHtmlElt.lookupPrefix("http://www.w3.org/2000/svg"); // true
  result[1].value = aHtmlElt.lookupPrefix(
    "http://www.w3.org/XML/1998/namespace",
  ); // false
  result[2].value = aHtmlElt.lookupPrefix("http://www.w3.org/TR/html4/"); // true
  result[3].value = aHtmlElt.lookupPrefix("https://www.w3.org/1999/xlink"); // false
  result[4].value = aSvgElt.lookupPrefix("http://www.w3.org/2000/svg"); // true
  result[5].value = aSvgElt.lookupPrefix("https://www.w3.org/1999/xlink"); // true
  result[6].value = aSvgElt.lookupPrefix(
    "http://www.w3.org/XML/1998/namespace",
  ); // false
});
```

仕様書
---

| Specification |
| --- |
| DOM Standard # dom-node-lookupprefix |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* http://www.w3.org/TR/DOM-Level-3-Cor...amespacePrefix
Node: baseURI プロパティ
===================

**`baseURI`** は `Node` インターフェイスの読み取り専用プロパティで、このノードを含む文書の絶対的なベース URL を返します。

ベース URL はブラウザーが絶対 URL を必要とするときに、相対 URL を解決するために使用されます。例えば、 HTML の `<img>` 要素の `src` 属性や、 SVG の `xlink:href` や `href` 属性を処理する場合などです。

このプロパティは読み取り専用ですが、値はプロパティがアクセスされるたびにアルゴリズムで決まりますので、状況が変化すると変化することがあります。

ベース URL は次のように決まります。

1. 既定で、ベース URL は文書の位置（`window.location` で指定された通り）となります。
2. これが HTML 文書であり、文書に `<base>` 要素があった場合、*最初の* `Base` 要素の `href` の値があれば、代わりに使用されます。
値
-

`Node` のベース URL を表す文字列です。

例
-

### <base> なし


```html
<output>Not calculated</output>
```



```js
const output = document.querySelector("output");
output.value = output.baseURI;
```

### <base> あり


```html
<base href="https://developer.mozilla.org/modified\_base\_uri/" />
<output>Not calculated</output>
```



```js
const output = document.querySelector("output");
output.value = output.baseURI;
```

仕様書
---

| Specification |
| --- |
| DOM Standard # ref-for-dom-node-baseuri① |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `<base>` 要素
Node: parentElement プロパティ
=========================

**`parentElement`** は `Node` インターフェイスの読み取り専用プロパティで、この DOM ノードの親である要素 (`Element`) を返します。このノードに親ノードがないか、親が DOM の `Element` でない場合は `null` を返します。

値
-

現在のノードの親ノードである `Element` を返します。そのようなものがない場合は `null` を返します。

例
-


```js
if (node.parentElement) {
  node.parentElement.style.color = "red";
}
```

仕様書
---

| Specification |
| --- |
| DOM Standard # ref-for-dom-node-parentelement① |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `Node.parentNode`
Node: isDefaultNamespace() メソッド
===============================

**`isDefaultNamespace()`** は `Node` インターフェイスのメソッドで、名前空間 URI を引数として受け取ります。
 その名前空間がこのノードの既定の名前空間である場合は `true` を返し、そうでない場合は `false` を返します。

**メモ:** 既定の名前空間は、 HTML 要素では常に `""` です。 SVG 要素では、 `xmlns` 属性で設定されます。

構文
--


```js
isDefaultNamespace(namespaceURI)
```

### 引数

`namespaceURI`

要素の検査対象となる名前空間を表す文字列です。

**メモ:** `namespaceURI` は省略可能ではありませんが、 `null` に設定することはできます。

### 返値

`true` または `false` の値を持つ論理値で、引数が既定の名前空間であるかどうかを示します。

例
-


```html
"" が &lt;output&gt; の既定の名前空間であるか: <output>未検査</output><br />
"http://www.w3.org/2000/svg" が &lt;output&gt; の既定の名前空間であるか:
<output>未検査</output><br />
"" が &lt;svg&gt; の既定の名前空間であるか: <output>未検査</output><br />
"http://www.w3.org/2000/svg" が &lt;svg&gt; の既定の名前空間であるか:
<output>未検査</output><br />
<svg xmlns="http://www.w3.org/2000/svg" height="1"></svg>
<button>結果を見るにはクリック</button>
```



```js
const button = document.querySelector("button");
button.addEventListener("click", () => {
  const aHtmlElt = document.querySelector("output");
  const aSvgElt = document.querySelector("svg");

  const result = document.getElementsByTagName("output");
  result[0].value = aHtmlElt.isDefaultNamespace(""); // true
  result[1].value = aHtmlElt.isDefaultNamespace("http://www.w3.org/2000/svg"); // false
  result[2].value = aSvgElt.isDefaultNamespace(""); // true
  result[3].value = aSvgElt.isDefaultNamespace("http://www.w3.org/2000/svg"); // false
});
```

仕様書
---

| Specification |
| --- |
| DOM Standard # dom-node-isdefaultnamespace |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `Node.lookupNamespaceURI`
* `Node.lookupPrefix`
Node: normalize() メソッド
======================

**`normalize()`** は `Node` インターフェイスのメソッドで、指定されたノードとその下のツリーを*正規化された*形にします。
 正規化されたサブツリーでは、サブツリー内に空のテキストノードがなくなり、隣り合うテキストノードがなくなります。

構文
--


```js
normalize()
```

### 引数

なし。

### 返値

なし。

例
-


```html
<output id="result"></output>
```



```js
const wrapper = document.createElement("div");

wrapper.appendChild(document.createTextNode("Part 1 "));
wrapper.appendChild(document.createTextNode("Part 2 "));

let node = wrapper.firstChild;
let result = "正規化前:<br/>";
while (node) {
  result += ` ${node.nodeName}: ${node.nodeValue}<br/>`;
  node = node.nextSibling;
}

wrapper.normalize();

node = wrapper.firstChild;
result += "<br/><br/>正規化後:<br/>";
while (node) {
  result += ` ${node.nodeName}: ${node.nodeValue}<br/>`;
  node = node.nextSibling;
}

const output = document.getElementById("result");
output.innerHTML = result;
```

仕様書
---

| Specification |
| --- |
| DOM Standard # ref-for-dom-node-normalize① |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* 逆の操作である `Text.splitText()`
Node: textContent プロパティ
=======================

**`textContent`** は `Node` のプロパティで、ノードおよびその子孫のテキストの内容を表します。

**メモ:** `textContent` と `HTMLElement.innerText` は混同しやすいものですが、2 つのプロパティは重要な点が異なります。

値
-

文字列または `null` です。値は場面によります。

* ノードが `document` または doctype である場合、`textContent` は `null` を返します。

**メモ:** 文書全体の*すべての*テキストと CDATA データを取得するには、`document.documentElement.textContent` を使用する方法があります。
* ノードが CDATA セクション、コメント、処理命令ノード、テキストノードの場合、`textContent` はそのノードの内側のテキスト、すなわち `Node.nodeValue` を返します。
* 他のノード型の場合、`textContent` は、コメントと処理命令ノードを除く、すべての子ノードの `textContent` 属性値を連結したものを返します。（ノードが子を持たない場合、これは空文字列になります。）

**警告:** ノードの `textContent` を設定すると、そのノードの*すべて*の子が取り除かれて、指定された値を持つ単一のテキストノードに置き換わります。

### innerText との違い

`Node.textContent` と `HTMLElement.innerText` の間の違いに混乱しないでください。名前は似ているようですが、重要な違いがあります。

* `textContent` は、`<script>` と `<style>` 要素を含む、*すべて*の要素の中身を取得します。一方、`innerText` は「人間が読める」要素のみを示します。
* `textContent` はノード内のすべての要素を返します。一方、`innerText` はスタイルを反映し、「非表示」の要素のテキストは返しません。
    + もっと言えば、`innerText` は CSS のスタイルを考慮するので、`innerText` の値を読み取ると最新の計算されたスタイルを保証するために再フローを起動します。（再フローは計算が重いので、可能であれば避けるべきです。）
### innerHTML との違い

`Element.innerHTML` は、その名が示すとおり HTML を返します。時に、`innerHTML` を使用して要素内のテキストを受け取ったり書き込んだりすることがありますが、`textContent` は値が HTML として解析されないので性能が良くなります。

さらに、`textContent` を使用することで XSS 攻撃を防ぐことができます。

例
-

最初は HTML の断片です。


```html
<div id="divA">This is <span>some</span> text!</div>
```


`textContent` を使用して、要素のテキストの内容を取得することができます。


```js
let text = document.getElementById("divA").textContent;
// 変数 text の値は 'This is some text!' となります。
```


また、要素のテキストを設定するには、次のようにします。


```js
document.getElementById("divA").textContent = "This text is different!";
// divA の HTML は次のようになります。
// <div id="divA">This text is different!</div>
```

仕様書
---

| Specification |
| --- |
| DOM Standard # dom-node-textcontent |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `HTMLElement.innerText`
* `Element.innerHTML`
* More on differences between `innerText` and `textContent`（ブログ投稿）
Node: ownerDocument プロパティ
=========================

**`ownerDocument`** は `Node` インターフェイスの読み取り専用プロパティで、このノードの最上位の文書オブジェクトを返します。

値
-

すべての子ノードが作成された最上位の `Document` オブジェクトです。

このプロパティが文書自身のノードで使用された場合、値は `null` になります。

例
-


```js
// 指定された "p" から、文書オブジェクトの子である最上位の HTML を取得します。

const d = p.ownerDocument;
const html = d.documentElement;
```

仕様書
---

| Specification |
| --- |
| DOM Standard # ref-for-dom-node-ownerdocument① |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
Node: nodeValue プロパティ
=====================

**`nodeValue`** は `Node` インターフェイスのプロパティで、現在のノードの値を返したり設定したりします。

値
-

 もしあれば、現在のノードの値を含む文字列です。
 文書自身においては、 `nodeValue` は `null` を返します。
 テキスト、コメント、 CDATA ノードでは、 `nodeValue` はノードの内容を返します。
 属性ノードにおいては、属性の値が返します。

以下の表はノードの種類別の返値を表しています。

| ノード | nodeValue の値 |
| --- | --- |
| `CDATASection` | CDATA セクションの中身 |
| `Comment` | コメントの中身 |
| `Document` | `null` |
| `DocumentFragment` | `null` |
| `DocumentType` | `null` |
| `Element` | `null` |
| `NamedNodeMap` | `null` |
| `ProcessingInstruction` | 対象を除く内容物全体 |
| `Text` | テキストノードの中身 |

**メモ:** `nodeValue` が `null` になると定義されている場合は、設定しても効果がありません。

例
-


```html
<div id="d1">Hello world</div>
<!-- コメントの例 -->
<output id="result">結果が出ていません。</output>
```


また、以下のスクリプトを参照してください。


```js
let node = document.querySelector("body").firstChild;
let result = "<br/>ノード名:<br/>";
while (node) {
  result += `${node.nodeName} の値: ${node.nodeValue}<br/>`;
  node = node.nextSibling;
}

const output = document.getElementById("result");
output.innerHTML = result;
```

仕様書
---

| Specification |
| --- |
| DOM Standard # dom-node-nodevalue |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
Node: cloneNode() メソッド
======================

**`cloneNode()`** は `Node` インターフェイスのメソッドで、このメソッドが呼び出されたノードの複製を返します。
 引数でノードに含まれるサブツリーを一緒に複製するかどうかを制御できます。

ノードを複製すると、固有（インライン）のリスナーを含む、ノードのすべての属性とその値が複製されます。 `addEventListener()` を使って追加されたイベントリスナーや、要素のプロパティに代入されたイベントリスナー（例: `node.onclick = someFunction`）は複製されません。さらに、 `<canvas>` 要素では、描画された画像は複製されません。

**警告:** `cloneNode()` を使用すると、文書内で要素の ID が重複する可能性があります。

元のノードに `id` 属性があり、複製を同じ文書に配置する場合は、複製の ID が重複しないように変更してください。

また、 `name` 属性も重複した名前を使わない場面では、変更する必要があるかもしれません。

**異なる**文書にノードを複製する場合は、代わりに `Document.importNode()` を使用してください。

構文
--


```js
cloneNode()
cloneNode(deep)
```

### 引数

`deep` 省略可

`true` の場合、ノードとそのサブツリーは、子ノードの `Text` にあるテキストも含め複製されます。

`false` の場合、このノードのみが複製されます。
 サブツリーは、そのノードに含まれているテキストも含め、複製されません。


なお、 `deep` は `<img>` や `<input>` のような空要素には効果がありません。

### 返値

 複製された `Node` を返します。
 複製されたノードには、文書に所属する他のノードに `Node.appendChild()` などを使用して追加されるまで、親ノードがなく、文書にも所属していません。

例
-


```js
let p = document.getElementById("para1");
let p_prime = p.cloneNode(true);
```

仕様書
---

| Specification |
| --- |
| DOM Standard # ref-for-dom-node-clonenode① |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
Node: isSameNode() メソッド
=======================

**`isSameNode()`** は `Node` インターフェイスのメソッドで、 `===` 厳密等価演算子の古い別名です。
 すなわち、 2 つのノードが全く同じであるかどうか（言い換えれば、同じオブジェクトを指しているかどうか）を検査します。

**メモ:** `isSameNode()` を使用する必要はありません。 `===` 厳密等価演算子を使用してください。

構文
--


```js
isSameNode(otherNode)
```

### 引数

`otherNode`

検査対象となる `Node` です。

**メモ:** この引数は省略可能ではありませんが、 `null` に設定することはできます。

### 返値

論理値で、両ノードが厳密に等しい場合は `true`、そうでなければ `false` です。

例
-

この例では、 3 つの `<div>` ブロックを作成しています。 1 つ目と 3 つ目は内容と属性が同じであり、 2 つ目は異なっています。このとき、`isSameNode()` を使って JavaScript でノードを比較した結果は以下のようになります。

### HTML


```html
<div>最初の要素です。</div>
<div>2 番目の要素です。</div>
<div>最初の要素です。</div>

<p id="output"></p>
```


```
#output {
  width: 440px;
  border: 2px solid black;
  border-radius: 5px;
  padding: 10px;
  margin-top: 20px;
  display: block;
}
```

### JavaScript


```js
let output = document.getElementById("output");
let divList = document.getElementsByTagName("div");

output.innerHTML += `div 0 と div 0 は同じか: ${divList[0].isSameNode(
 divList[0],
)}<br/>`;
output.innerHTML += `div 0 と div 1 は同じか: ${divList[0].isSameNode(
 divList[1],
)}<br/>`;
output.innerHTML += `div 0 と div 2 は同じか: ${divList[0].isSameNode(
 divList[2],
)}<br/>`;
```

### 結果

仕様書
---

| Specification |
| --- |
| DOM Standard # dom-node-issamenode |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `Node.isEqualNode()`
Node: compareDocumentPosition() メソッド
====================================

**`compareDocumentPosition()`** は `Node` インターフェイスのメソッドで、引数のノードの位置を、呼び出されたノードからの相対位置で報告します。

構文
--


```js
compareDocumentPosition(otherNode)
```

### 引数

`otherNode`

`Node` で、このノードとの相対位置を報告するノードを指定します。

### 返値

整数値で、 `otherNode` の `node` から見た相対位置を、以下の `Node` の定数プロパティを組み合わせたビットマスクで表します。

`Node.DOCUMENT_POSITION_DISCONNECTED` (`1`)

両方のノードが、異なる文書、または同じ文書の異なるツリーにあります。

`Node.DOCUMENT_POSITION_PRECEDING` (`2`)

`otherNode` はこのノードより、両者を含むツリーの前順深さ優先走査で前にある（祖先ノード、前にある兄弟ノード、前にある兄弟ノードの子孫ノード、祖先ノードの前にある兄弟ノードなど）か、（接続されていないのであれば）任意だが一貫した順序で、そのノードよりも前に位置します。

`Node.DOCUMENT_POSITION_FOLLOWING` (`4`)

`otherNode` はこのノードより、両者を含むツリーの前順深さ優先走査で後にある（子孫ノード、後にある兄弟ノード、後にある兄弟ノードの子孫ノード、祖先ノードの後にある兄弟ノードなど）か、（接続されていないのであれば）任意だが一貫した順序で、そのノードよりも後に位置します。

`Node.DOCUMENT_POSITION_CONTAINS` (`8`)

`otherNode` はこのノードの祖先ノードです。

`Node.DOCUMENT_POSITION_CONTAINED_BY` (`16`)

`otherNode` はこのノードの子孫ノードです。

`Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC` (`32`)

その結果は、任意や実装固有の動作に依存し、移植性は保証されません。

複数の条件に適合する場合、複数のビットが設定されることがあります。例えば、 `otherNode` が文書中でより先にあり、***かつ*** `compareDocumentPosition()` が呼び出されたノードを含んでいれば、 `DOCUMENT_POSITION_CONTAINS` と `DOCUMENT_POSITION_PRECEDING` の両ビットが設定され、 `10` (`0x0A`) という値になります。

例
-


```js
const head = document.head;
const body = document.body;

if (head.compareDocumentPosition(body) & Node.DOCUMENT\_POSITION\_FOLLOWING) {
  console.log("正しい形式の文書です");
} else {
  console.error("<head> が <body> の前にありません");
}
```


**メモ:** `compareDocumentPosition()` の返値はビットマスクですので、意味のある結果を得るにはビット AND 演算子を使用する必要があります。

仕様書
---

| Specification |
| --- |
| DOM Standard # ref-for-dom-node-comparedocumentposition① |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `Node.contains()`
Node: contains() メソッド
=====================

**`contains()`** は `Node` インターフェイスのメソッドで、あるノードが指定されたノードの子孫であるか、すなわち、このノード自体であるか、直接の子ノード (`childNodes`) の何れかであるか、直接の子ノードの子ノードの何れかであるか（以下同様）を示す論理値を返します。

**メモ:** ノードは自分自身に**含まれます**。

構文
--


```js
contains(otherNode)
```

### 引数

`otherNode`

検査する `Node` です。

**メモ:** `otherNode` は省略できませんが、 `null` に設定することはできます。

### 返値

 論理値で、 `true` は `otherNode` がそのノードに含まれていることを表します。
 そうでなければ `false` になります。

`otherNode` 引数が `null` であれば、 `contains()` は常に `false` になります。

例
-

この関数は、ある要素がそのページの body 要素に含まれるかどうかを検査するものです。 `contains` は包括的かつ決定的であるため、 body がそれ自身を含むかどうかは `isInPage` の意図するところではないため、明示的に `false` を返します。


```js
function isInPage(node) {
  return node === document.body ? false : document.body.contains(node);
}
```

仕様書
---

| Specification |
| --- |
| DOM Standard # ref-for-dom-node-contains① |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `Node.compareDocumentPosition`
* `Node.hasChildNodes`