diff options
author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:40:17 -0500 |
---|---|---|
committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:40:17 -0500 |
commit | 33058f2b292b3a581333bdfb21b8f671898c5060 (patch) | |
tree | 51c3e392513ec574331b2d3f85c394445ea803c6 /files/ja/web/api/mutationobserver/index.html | |
parent | 8b66d724f7caf0157093fb09cfec8fbd0c6ad50a (diff) | |
download | translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.gz translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.bz2 translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.zip |
initial commit
Diffstat (limited to 'files/ja/web/api/mutationobserver/index.html')
-rw-r--r-- | files/ja/web/api/mutationobserver/index.html | 210 |
1 files changed, 210 insertions, 0 deletions
diff --git a/files/ja/web/api/mutationobserver/index.html b/files/ja/web/api/mutationobserver/index.html new file mode 100644 index 0000000000..b4cfeb514b --- /dev/null +++ b/files/ja/web/api/mutationobserver/index.html @@ -0,0 +1,210 @@ +--- +title: MutationObserver +slug: Web/API/MutationObserver +tags: + - API + - Advan + - DOM + - DOM Reference + - NeedsContent + - NeedsUpdate + - Reference +translation_of: Web/API/MutationObserver +--- +<p>{{APIRef("DOM WHATWG")}}</p> + +<p><code>MutationObserver</code> とは、指定したコールバック関数を <a href="/ja/docs/DOM">DOM</a> の変更時に実行させる API です。この API は、DOM3 Events の仕様で定義されていた <a href="https://developer.mozilla.org/ja/docs/Web/Guide/Events/Mutation_events">Mutation Events</a> を新しく設計し直したものです。</p> + +<p>{{英語版章題("Constructor")}}</p> + +<h2 id="Constructor" name="Constructor">コンストラクタ</h2> + +<h3 id="MutationObserver()" name="MutationObserver()"><code>MutationObserver()</code></h3> + +<p>DOM の変更を検知するオブザーバを生成します。</p> + +<pre>MutationObserver( + function callback +); +</pre> + +<h6 id="Parameters" name="Parameters">引数</h6> + +<dl> + <dt><code>callback</code></dt> + <dd>DOM の変更時に呼び出される関数です。この関数は第 1 引数に {{domxref("MutationRecord")}} の配列を、第 2 引数に <code>MutationObserver</code> インスタンス自身を受け取ります。</dd> +</dl> + +<p>{{英語版章題("Instance medhods")}}</p> + +<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2> + +<table class="standard-table"> + <tbody> + <tr> + <td><code>void <a href="#observe()">observe</a>( {{domxref("Node")}} target, <a href="#MutationObserverInit">MutationObserverInit</a> options );</code></td> + </tr> + <tr> + <td><code>void <a href="#disconnect()">disconnect</a>();</code></td> + </tr> + <tr> + <td><code>Array <a href="#takeRecords()">takeRecords</a>();</code></td> + </tr> + </tbody> +</table> + +<div class="note"> +<p><strong>補足</strong>: 引数 {{domxref("Node")}} target は <a href="https://nodejs.org/">NodeJS</a> と関係ありません。</p> +</div> + +<h3 id="observe()" name="observe()"><code>observe()</code></h3> + +<p>DOM の変更を検知したいノードを指定し、<code>MutationObserver</code> インスタンスを紐づけます。</p> + +<pre>void observe( + {{domxref("Node")}} target, + <a href="#MutationObserverInit"><code>MutationObserverInit</code></a> options +); +</pre> + +<h6 id="Parameters" name="Parameters">引数</h6> + +<dl> + <dt><code>target</code></dt> + <dd>DOM の変更を検知したい {{domxref("Node")}}</dd> + <dt><code>options</code></dt> + <dd>取得したい変更の種類を指定する <a href="#MutationObserverInit"><code>MutationObserverInit</code></a> オブジェクト</dd> +</dl> + +<div class="note"> +<p><strong>補足</strong>: MutationObserver インスタンスと対象ノードを変えずに observe() を 2 回実行しても、コールバックは 1 回だけ呼び出され、また disconnect() を 2 回呼び出す必要もありません(addEventListener と同様)。しかし、別の MutationObserver インスタンスであれば、同じノードに別のオブザーバが追加されます。</p> +</div> + +<h3 id="disconnect()" name="disconnect()"><code>disconnect()</code></h3> + +<p><code>MutationObserver</code> インスタンスを対象ノードから解除します。同じインスタンスで <a href="#observe()"><code>observe()</code></a> メソッドを再度呼び出すまで、オブザーバのコールバック関数は実行されません。</p> + +<pre>void disconnect(); +</pre> + +<h3 id="takeRecords()" name="takeRecords()"><code>takeRecords()</code></h3> + +<p>コールバック関数へ渡される {{domxref("MutationRecord")}} のキューを空にし、キューに入っていた値を返します。</p> + +<pre>Array takeRecords(); +</pre> + +<h6 id="Return_value" name="Return_value">戻り値</h6> + +<p>{{domxref("MutationRecord")}} の配列。</p> + +<h2 id="MutationObserverInit" name="MutationObserverInit"><code>MutationObserverInit</code></h2> + +<p><code>MutationObserverInit</code> は以下のプロパティを指定できるオブジェクトです。</p> + +<table class="standard-table"> + <tbody> + <tr> + <td class="header">プロパティ</td> + <td class="header">意味</td> + </tr> + <tr> + <td><code>childList</code></td> + <td>対象ノードの子ノード(テキストノードも含む)に対する追加・削除を監視する場合は <code>true</code> にします。</td> + </tr> + <tr> + <td><code>attributes</code></td> + <td>対象ノードの属性に対する変更を監視する場合は <code>true</code> にします。</td> + </tr> + <tr> + <td><code>characterData</code></td> + <td>対象ノードのデータに対する変更を監視する場合は <code>true</code> にします。</td> + </tr> + <tr> + <td><code>subtree</code></td> + <td>対象ノードとその子孫ノードに対する変更を監視する場合は <code>true</code> にします。</td> + </tr> + <tr> + <td><code>attributeOldValue</code></td> + <td>対象ノードの変更前の属性値を記録する場合は <code>true</code> にします(<code>attributes</code> が <code>true</code> の時に有効)。</td> + </tr> + <tr> + <td><code>characterDataOldValue</code></td> + <td>対象ノードの変更前のデータを記録する場合は <code>true</code> にします(<code>characterData</code> が <code>true</code> の時に有効)。</td> + </tr> + <tr> + <td><code>attributeFilter</code></td> + <td>すべての属性の変更を監視する必要がない場合は、(名前空間を除いた)属性ローカル名の配列を指定します。</td> + </tr> + </tbody> +</table> + +<p>{{英語版章題("Example usage")}}</p> + +<h2 id="Example_usage" name="Example_usage">使用例</h2> + +<p>以下の例は <a class="external" href="http://hacks.mozilla.org/2012/05/dom-mutationobserver-reacting-to-dom-changes-without-killing-browser-performance/" rel="freelink">このブログ記事</a> を参考にしたものです。</p> + +<pre class="brush: js">// 対象とするノードを取得 +const target = document.getElementById('some-id'); + +// オブザーバインスタンスを作成 +const observer = new MutationObserver((mutations) => { + mutations.forEach((mutation) => { + console.log(mutation.type); + }); +}); + +// オブザーバの設定 +const config = { attributes: true, childList: true, characterData: true }; + +// 対象ノードとオブザーバの設定を渡す +observer.observe(target, config); + +// 後ほど、監視を中止 +observer.disconnect(); +</pre> + +<p>{{英語版章題("Additional reading")}}</p> + +<h2 id="Additional_reading" name="Additional_reading">関連情報</h2> + +<ul> + <li><a class="external" href="http://updates.html5rocks.com/2012/02/Detect-DOM-changes-with-Mutation-Observers" rel="freelink">簡単な概要</a></li> + <li><a class="external" href="http://hacks.mozilla.org/2012/05/dom-mutationobserver-reacting-to-dom-changes-without-killing-browser-performance/" rel="freelink">より詳細な議論</a></li> + <li><a class="external" href="http://www.youtube.com/watch?v=eRZ4pO0gVWw" rel="freelink">Chromium の開発者 Rafael Weinstein 氏によるスクリーンキャスト</a></li> + <li><a class="external" href="http://code.google.com/p/mutation-summary/" rel="freelink">ライブラリ "mutation-summary"</a></li> +</ul> + +<p>{{英語版章題("Specifications")}}</p> + +<h2 id="Specifications" name="Specifications">仕様</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">仕様書</th> + <th scope="col">策定状況</th> + <th scope="col">備考</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{SpecName('DOM WHATWG', '#mutationobserver', 'MutationObserver')}}</td> + <td>{{ Spec2('DOM WHATWG') }}</td> + <td> </td> + </tr> + </tbody> +</table> + +<p>{{英語版章題("Browser compatibility")}}</p> + +<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2> + +<p>{{Compat("api.MutationObserver")}}</p> + +<article class="approved text-content"> +<div class="boxed translate-rendered"> +<div id="compat-desktop"> </div> +</div> +</article> |