JavaScriptでevent handlerを実装する標準的方法
customeElementWatcher
https://searchfox.org/mozilla-central/source/devtools/server/actors/targets/browsing-context.js#357
/
* The CustomElementWatcher can be used to be notified if a custom element definition
* is created for a node.
*
* When a custom element is defined for a monitored name, an "element-defined" event is
* fired with the following Object argument:
* - String name: name of the custom element defined
* - Set Set of impacted node actors
*/
class CustomElementWatcher extends EventEmitter {
constructor(chromeEventHandler) {
技術情報を掘るときに、日本語で検索しても出てこないんだろうなという諦観がある
Event handler
FirefoxのDOMのEventHandlerの実装
調べましたがよくわかりませんでした
いかがでしたか?
「[Javascript] イベント駆動型の設計ができるEventEmitterに入門」
EventHandler.webidl
『Domain events: design and implementation』
chromeEventHandler
addEventListenerForElementの説明コメント の翻訳
このヘルパーの他のメソッドと同様に、要素の ID を渡す必要があります。
コンテンツ ページが移動した場合、イベント リスナーは再び追加されないことに注意してください。
また、従来の DOM イベントとは異なり、ここで追加された bylisteners で処理されるイベントは、バブリングの段階でのみドキュメントを伝搬するので、useCapture パラメータはサポートされていないことに注意してください。
重要: クローム専用の canvasFrame 挿入 API は、挿入された要素への参照がクローム JS コードに漏れないように細心の注意を払っています。これは、そうでなければ、クローム JS コードがネイティブの anon elementsinside canvasFrame を自由に変更し、おそらくこのフレームを管理する C++ コードによって変更されないと仮定されているものを変更する可能性があるためです。https://wiki.mozilla.org/DevTools/Highlighter#The_AnonymousContent_APIUnfortunately を参照してください、挿入されたノードは、event を介してまだ利用可能です。 したがって、イベントがハンドラに渡される前に originalTarget プロパティは無効化されます。
詳細。イベントタイプごとに1つのイベントリスナーがブラウザレベルで追加され、イベントoriginalTargetが提供されたIDを持っていることが判明した場合、コールバックが実行されます(そして、originalTargetの親ノードのIDもチェックされます)。
param String id
param 文字列型
param 関数ハンドラ