gpt4 book ai didi

Javascript dispatchEvent - 如何更改 eventArgs

转载 作者:行者123 更新时间:2023-11-27 23:41:47 24 4
gpt4 key购买 nike

我有一个由特定函数触发的自定义事件。

此事件包含一个包含详细信息等的eventArgs。我希望处理程序/监听器能够更改 eventArgs,以便原始函数获得更改后的值。这可能吗?

到目前为止我已经尝试过:

处理程序/监听器

document.addEventListener('myCustomEvent', function(eventArgs)
{
eventArgs.detail.value = newValue; // I want the listener to change the value in "e"
});

来电者

var eventArgs = {                   
detail:
{
value: originalValue;
},
bubbles: false, //not sure what this does
cancelable: false, //not sure what this does
};

document.dispatchEvent(new CustomEvent('myCustomEvent', eventArgs ));

//do things here with a changed eventArgs after the event is fired

监听器中所做的更改不会到达调用者。我还尝试在 eventArgs.detail 中添加复杂对象,但在这种情况下,处理程序会得到 null eventArgs

是不可能完成还是我错过了什么?

<小时/>

重要提示:我在 Chrome 扩展程序中执行此操作,其中事件在直接附加到文档的脚本中触发,并且监听器属于扩展程序代码(内容脚本)。

最佳答案

这应该可行,请记住,您必须在调用dispatchEvent之前调用addEventListener。 Javascript 通过引用传递对象,因此任何更改都会在原始对象上完成。

var eventArgs = {
detail: {
value: 5
}
};

document.addEventListener('myCustomEvent', function(eventArgs)
{
eventArgs.detail.value = 6; // I want the listener to change the value in "e"
});
document.dispatchEvent(new CustomEvent('myCustomEvent', eventArgs));

$('#button').click(function() {
alert(eventArgs.detail.value);
});

https://jsfiddle.net/polarisjunior/uLwaw924/1/如果单击该按钮,您可以看到该值已更新。

关于Javascript dispatchEvent - 如何更改 eventArgs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33598103/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com