[解決済み] JavaScript / jQuery の DOM チェンジリスナーはありますか?
2022-03-21 09:11:52
質問
基本的に、私は、あるスクリプトが
DIV
を変更します。スクリプトは別々なので(Chrome拡張のコンテンツスクリプトとウェブページスクリプト)、DOM状態の変化を簡単に観察する方法が必要です。私はポーリングをセットアップすることができましたが、それはずさんなように思えます。
どのように解決するのですか?
長い間、DOM3 の変異イベントは利用可能な最善の解決策でしたが、パフォーマンス上の理由から非推奨となりました。
DOM4 変異オブザーバ
は、非推奨の DOM3 変異イベントに代わるものです。 これらは
現在、モダンブラウザに実装されている
として
MutationObserver
(または、ベンダープレフィックスの
WebKitMutationObserver
を使用することができます(古いバージョンのChromeの場合)。
MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
var observer = new MutationObserver(function(mutations, observer) {
// fired when a mutation occurs
console.log(mutations, observer);
// ...
});
// define what element should be observed by the observer
// and what types of mutations trigger the callback
observer.observe(document, {
subtree: true,
attributes: true
//...
});
この例では、DOMの変更をリッスンするために
document
とそのサブツリー全体の構造的な変更だけでなく、要素の属性の変更に対しても発火します。 仕様書ドラフトには、有効な
変異リスナーのプロパティ
:
チャイルドリスト
- 設定する
true
ターゲットの子への変異を観察する場合。属性
- 設定する
true
ターゲットの属性に対する変異を観察する場合。文字データ
- 設定する
true
ターゲットのデータに対する変異を観測する場合。サブツリー
- に設定します。
true
ターゲットだけでなく、ターゲットの子孫の変異も観察する場合。attributeOldValue
- 設定する
true
もしattributes
が真に設定され、変異前のターゲットの属性値を記録する必要があります。キャラクターデータオールドバリュー
- 設定する
true
もしcharacterData
がtrueに設定されており、変異前のターゲットのデータを記録する必要があります。属性フィルタ
- すべての属性の変異を観察する必要がない場合、属性ローカル名のリスト(名前空間なし)に設定されます。
(このリストは2014年4月現在のものであり、変更があれば仕様書を確認してください)。
関連
-
[解決済み] 配列の結合時に未定義のプロパティ 'push' を読み込むことができない
-
[解決済み】エラー。Ionic使用中にモジュール '../lib/utils/unsupported.js' が見つかりませんでした。
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] jQueryでチェックボックスに "checked "を設定する
-
[解決済み] jQueryの「exists」関数はありますか?
-
[解決済み】jQueryでチェックボックスがチェックされているかどうかを確認するにはどうすればよいですか?
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
元のイベントが実行されなかった後に要素を追加するためのjQueryソリューション
-
vueのグローバルがscss(mixin)を導入。
-
[解決済み】GETできない / Nodejsエラー
-
[解決済み】React Nativeアプリをターミナルから実行するとエラーが発生する(iOS)
-
[解決済み] 期待される代入または関数呼び出し: 未使用式なし ReactJS
-
[解決済み] Web API エラー - このリクエストはブロックされました; コンテンツは HTTPS で提供されなければなりません
-
[解決済み】TypeErrorの解決方法。未定義またはヌルをオブジェクトに変換できない
-
[解決済み】JavaScriptでインラインIF文の書き方は?
-
Uncaught TypeError: null のプロパティ 'offsetHeight' を読み取れませんでした。
-
JSクリックイベント - Uncaught TypeError: プロパティ 'onclick' に null を設定できません。