私はプレーンJavaScriptでカスタムイベントを作成し、それをDOM要素にアタッチします。この要素には、同じイベントの複数のイベントリスナーがあります。私が書いたコードは次のとおりです。プレーンJavaScriptでカスタムイベントハンドラからデータを収集
var element = document.getElementById('demo');
element.addEventListener("myCustomEvent", function(e) {
console.log("myCustomEvent first handler triggered");
});
element.addEventListener("myCustomEvent", function(e) {
console.log("myCustomEvent second handler triggered");
e.data['otherKey'] = 'other value';
return e.data;
});
// Trigger the event
var event = new CustomEvent("myCustomEvent", {
data: {
firstKey: 'first Value'
}
});
element.dispatchEvent(event);
今、私が欲しいものを以下のように最後のイベントハンドラからデータを取得し、次のとおりです。私は上記の行が正しくない可能性が知っているけれども
var modifiedData = element.dispatchEvent(event);
が、私はそのようなものが欲しい。 jQuery
を使用すると、$ .triggerHandlerのようなかなり単純なものがあります。これは、特定のイベントのすべてのリスナーに対して反復処理を行い、もしあれば、最後のハンドラの戻り値を返します。
しかし、私は純粋なJavascriptでそれをしたいです。そんなことのための解決策はありますか?
私はライブラリを開発していると私は、ユーザーがObject.assignを使用することを期待していません。彼らは、ディスパッチャーからその値を収集できるように、ハンドラから値を返すことができます。 –