問題タブ [dom4]

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.

0 投票する
3 に答える
31803 参照

javascript - 新しい要素を作成するための Mutation Observer

特定の div が作成されたときに関数をオフにしようとしています。簡単に言えば、次のようなものがあります。

以前は、ミューテーション イベントで div#bar の作成をリッスンしていました。次のようなものです。

Mutation Observers を使用して同等のものはありますか? Can you have a javascript hook trigger after a DOM element's style object changes? に掲載されている attrchange.js を試してみました。ただし、そのプラグインは、要素が作成されたときではなく、要素が変更されたときのみを検出します。

0 投票する
2 に答える
9012 参照

javascript - When are MutationObserver callbacks fired?

I know that MutationObservers callbacks may get called sometime after the DOM change. But the question is: What is the timing of these callbacks? Do the callbacks enter the event queue of the browsers? If so, when do they enter the queue?

Are the callbacks:

  • called immediately after the DOM mutation take place,
  • called as soon as the function that manipulate DOM finishes,
  • called as soon as the call stack is empty,
  • enqueued immediately after the DOM mutation take place,
  • enqueued as soon as the function that manipulate DOM finishes, or
  • at some other time?

For example, if the following piece of code is executed (with setZeroTimeout defined here):

Should "MutationObserver" be printed before "message event" or after it? Or is it implementation-defined?

I'm getting "MutationObserver" before "message event" on Chromium 26, though the DOM mutation is after message posting. Maybe this is indicating that MutationObserver callbacks are not using the event queue.

I have googled for HTML specification, DOM specification or browser implementation documents, but I didn't found anything related to this behavior.

Any explanation or documentation on the timing of MutationObservers callbacks please?

0 投票する
1 に答える
3796 参照

javascript - ポリフィルを使用して Shadow DOM をどの程度までエミュレートできますか?

DOM を検索およびトラバースするためのカスタム関数を提供することで、Shadow DOM W3C ドラフトを JavaScript でポリフィルできますか? これは行われましたか?私が見つけた試みはかなりおとなしいシムであり、仕様をエミュレートするために多くの努力をしていないようです.

これが簡単な作業ではないことは承知していますが、誰かが十分に検討したのではないでしょうか?

0 投票する
1 に答える
267 参照

callback - どの MutationObserver からコールバックが呼び出されたかを検出する方法はありますか?

2 つの異なる dom ノードに対して 1つのコールバック関数と 2 つのMutationObserversがある場合、呼び出されたときにどのオブザーバーがコールバックをトリガーしたかを知る方法はありますか? コールバックが実行する必要がある作業はほぼ同じなので、オブザーバーごとに 1 つ作成するのは望ましくないようです。

0 投票する
1 に答える
909 参照

javascript - ID をタグに追加する際に DOMSubtreeModified イベントが発生しないようにする

DOMSubtreeModified を使用して、div 内のすべての DOM 変更を取得しています。

上記のコードでは、DOM の変更時に createUniqueId() 関数を呼び出しています。

上記のコードは、ID を持たないタグごとに一意の ID を作成します。
Id を割り当てると、DOMSubtreeModified イベントが発生します。
ID の割り当て時に DOMSubtreeModified イベントを発生させないようにするにはどうすればよいですか?

0 投票する
3 に答える
1518 参照

php - Web アプリケーションに最低限必要なブラウザー バージョンを要求する

フロントエンドでMutationObserverなどの最新のブラウザー機能が必要な PHP の Web アプリケーションがあります。サイトに記載されているように、この機能をサポートするのは非常に新しいブラウザーのみです。同じことが、私が依存する必要があるいくつかの HTML5 機能にも当てはまります。

私が今達成したいのは、ユーザーが実行しているブラウザーの UserAgent-String を使用してサーバー側を確認し、特定のバージョンを下回っている場合は、使用する必要があることを通知される情報ページにリダイレクトすることです。新しいブラウザ。

私はしばらくの間、適切な正規表現をセットアップして UA 文字列をチェックしようとしてきました。ただし、ブラウザーの製造元が常にクリーンなスキーマを保持しているとは限らないため、少し行き詰まっています。たとえば、Opera ブラウザーの場合、最小バージョン 12 が必要だとします。

  • Opera 12.14 の例 1: Opera/9.80 (Windows NT 6.0) Presto/2.12.388 バージョン/12.14
  • Opera 12.14 の例 2: Mozilla/5.0 (Windows NT 6.0; rv:2.0) Gecko/20100101 Firefox/4.0 Opera 12.14
    これは Firefox 4.0 の場合もあります。
  • Opera 11.51: Mozilla/5.0 (互換性あり; MSIE 9.0 ; Windows NT 6.1; de) Opera 11.51
    これは Internet Explorer 9.0 の可能性もあります。

また、Opera 12.14 の 2 つの例に示されているように、同じブラウザーとバージョンを追跡するのは注意が必要です: 「Version/12.14」または「Opera 12.14」、またはその他のかなり「ランダムな」文字列です。他のブラウザの場合、問題は非常に似ています。

質問は次のとおりです。どのように進めますか?

方法 1:
useragentstring.com には、ユーザーがウェルカム ページにアクセスしたり、ログインしたりするたびにクエリを実行できる API があります。セキュリティアプリのパフォーマンスの問題で、これが良いアイデアかどうかはわかりません。

方法 2:
browscap.ini と組み合わせた PHP の get_browser() 関数。この方法では、デスクトップ ブラウザーとモバイル ブラウザーを区別できません。

方法 3:
方法 2 の代わりにphpbrowscapを使用できます。この場合、アクセスできないサーバーのどこかにある browscap.ini に依存することなく、独自の browsercap.ini を定義できます。

または他の方法はありますか?

いくつかのコメントをいただければ幸いです。

0 投票する
1 に答える
939 参照

javascript - MutationRecord が発生した正確な場所 (複数のターゲット) を知るには?

要素のグループを観察しようとしています。要素の数は、1 から 10 までさまざまです。

そう..

いずれかの要素の値が変更された場合、MutationRecord.type characterData を受け取ります。私の例では、$observedElements[1] が '35.00' から '25.00' に変わります。

しかし、この変更が優れた $observedElements[1] にあったことをどのように知ることができますか? 受信した target.textContent には、テキスト値のみが含まれています。