Javascript IE 11中发送事件的正确方法

Javascript IE 11中发送事件的正确方法,javascript,internet-explorer,events,internet-explorer-11,dispatch,Javascript,Internet Explorer,Events,Internet Explorer 11,Dispatch,我在Internet Explorer 11中调度事件时遇到问题。 目前,我们有: fireEvent 对于IE 及 普通浏览器的习惯用法 问题是这两种方法在IE11中都不起作用。新方法也不适用-使用new Event()/new CustomEvent() 看起来微软不赞成他们的专利fireEvent(用于IE 11),但是 未提供正确调度的支持 另外,我相信我已经阅读了所有与此相关的主题,但仍然无法找到有效的解决方案来回答我自己的问题(感谢@LynnCrumbling指出): 浏览器特定的事

我在Internet Explorer 11中调度事件时遇到问题。 目前,我们有:

fireEvent
对于IE 及

普通浏览器的习惯用法

问题是这两种方法在IE11中都不起作用。新方法也不适用-使用
new Event()
/
new CustomEvent()

看起来微软不赞成他们的专利
fireEvent
(用于IE 11),但是 未提供正确调度的支持

另外,我相信我已经阅读了所有与此相关的主题,但仍然无法找到有效的解决方案来回答我自己的问题(感谢@LynnCrumbling指出):

浏览器特定的事件触发行为最好替换为统一的jQuery调用,如:

var eventObject = jQuery.Event("change"); // event you need to fire
$(targetObject).trigger(eventObject);

以下是一个完全有效的解决方案,我基于这个答案:

您可以这样使用它:
SendBrowserAgnosticEvent(myElement,'change')
它将返回创建的
事件
对象

下面是JavaScript中的代码

/**这允许我们在旧IE和新浏览器中调度浏览器事件*/
导出变量SendBrowserAgnosticEvent=函数(元素,事件名称){
//需要IE支持:https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/dispatchEvent#Browser_Compatibility
//https://stackoverflow.com/a/49071358/79677
var事件;
if(类型(事件)=“功能”){
事件=新事件(eventName);
}否则{
event=document.createEvent('event');
initEvent(eventName,true,true);
}
要素调度事件(事件);
返回事件;
};
这里是全打字的打字脚本

/**这允许我们在旧IE和新浏览器中调度浏览器事件*/
export const SendBrowserAgnosticEvent=(elem:T,eventName:string):事件=>{
//需要IE支持:https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/dispatchEvent#Browser_Compatibility
//https://stackoverflow.com/a/49071358/79677
让事件发生;
if(类型(事件)=“功能”){
事件=新事件(eventName);
}否则{
event=document.createEvent('event');
initEvent(eventName,true,true);
}
要素调度事件(事件);
返回事件;
};

这难道不是jquery的目标吗?要想把所有的怪异和不起作用的事情都抽象出来,这样你就可以打电话给……另请看@LynnCrumbling看起来很有希望,我会在我有空的时候试试work@LynnCrumbling你提出的解决方案完美无瑕!谢谢!谢谢你用打字机写的代码。这对我很有用。
var eventObject = jQuery.Event("change"); // event you need to fire
$(targetObject).trigger(eventObject);