問題タブ [mutation-observers]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - Chrome/Firefox拡張機能を使用して新しいノードがDOMに追加されないようにする方法は?
一部のスクリプトの悪意のある動作を検出するための拡張機能を作成しています。これらのスクリプトは、ページがロードされた後にいくつかのノードを DOM に追加します。これらのノードを使用して取得できます
しかし、どうすればそれらがロードされないようにできますか? これは Chrome または Firefox で実行できますか?
javascript - chrome devtools を介してノードが追加/削除されたときに DOM の変更を観察する
DOM へのすべての変更を記録する必要がある Chrome プラグインを作成しています。また、chrome devtools によって作成されたもの。contentscript で MatationObeserver を使用して属性の変更を取得できますが、devtools を介してノードを挿入/削除することはできません。誰でもアイデアはありますか?
javascript - Mutation Observer は特定のコンテンツのみを取得します
私は次の構造を持っています:
INSIDE $('.col') クラス「ブロック」の div が次のように含まれている場合にのみ、ノードを取得したいと思います。
はい:
しかし、これにはいいえ:
私のオブザーバーは次のようになります。
私はクロム拡張機能の中にいますが、それは実際には問題ではありません
javascript - 要素が JS と元の HTML ドキュメントによって追加されたかどうかを判断する *OR* スクリプトが InnerHtml によってノードを更新するタイミングを検出する
つまり、一部のスクリプトが親要素の InnerHtml プロパティを介して要素を挿入したためにページ上の特定の要素がページ上にあるかどうか、またはそれらがダウンロードした元の HTML ドキュメントの一部であったかどうかを知る必要があります。これら 2 つの可能性は、この (ばかげた) アプリケーションでは非常に異なることを意味します。
実際のユースケース:
サード パーティのスクリプトは、要素の InnerHtml 属性を設定することにより、ページ上のランダムなノード要素を更新します。私はブラウザ (WPF / GeckoFx / XulRunner) を完全に制御でき、(新しい) JS を自由に挿入および変更できますが、高度に難読化されたサードパーティのスクリプトを変更する洞察や機能はまったくありません。
必要なデータを取得する唯一の方法は、ページの読み込み後に、画面上の特定の要素が存在する場合は、サードパーティのスクリプト (innerHtml) によって読み込まれたかどうか、または以前に元の Html ドキュメントの一部であったかどうかを判断することです。サードパーティのスクリプトが実行されました。
元のページには多くのインライン スクリプトが含まれているため、元のページの HTML コンテンツ ソースと最終的な状態を単純に比較することは困難です。
誰にもアイデアはありますか?
html - MutationObserver で HTML 要素の offsetTop 属性を観察することは可能ですか?
HTML ページでは、要素のスタイルの変更 (マージン、パディング、高さなど)、他の要素の挿入または削除、または他の要素のスタイルの変更など、さまざまな理由で要素の位置が変更される可能性があります。
jQuery ダイアログが常にアンカーの隣に配置されるようにする必要があるため、アンカーが移動するとダイアログも移動します。ただし、ダイアログが表示されているページを制御しません (JS を動的に挿入します)。MutationObserver を使用して要素 (およびそのすべての親要素) の offsetTop プロパティへの変更を監視できると考えましたが、offsetTop の変更によってミューテーション イベントが発生するようには見えません。
offsetTop の変更によってミューテーション イベントが発生しないことを確認したり、オフセット トップを監視する方法を教えてもらえますか?
あるいは、ダイアログがアンカーにとどまるようにするための他の手法がある場合、私はすべて耳を傾けます-ただし、ページ自体は制御せず、ダイアログのみを制御するという制約に注意してください:)
フィドル:
次のフィドルでは、「マージン」ボタンをクリックすると、アンカー要素のマージントップが変更され、style
属性が変更され、再配置がトリガーされます。ただし、offsetTop 属性が変更されていても、他のボタンをクリックしても再配置されません。position()
関数を呼び出すには、他の 2 つのボタンが必要です。
http://jsfiddle.net/ustmssx7/2/
制約
私は HTML や Javascript を制御していません。私の JS は他の人のページに挿入されているため、できることは非常に限られています。
後退する
私のフォールバック ソリューションは、window.anchor.offsetTop
100 ミリ秒ごとにポーリングし、変更された場合は再配置することです。ただし、ポーリングはうまくいかないので、代わりにイベントに反応できれば、はるかに良いでしょう。