dispatchEvent在IE11中不起作用

56 javascript javascript-events dispatchevent internet-explorer-11

我使用以下代码提交到表单:

element.dispatchEvent(new Event("submit"));
Run Code Online (Sandbox Code Playgroud)

Inspector返回错误:对象不支持此操作

这适用于Chrome.

此命令的目的是在单击时对窗体上的提交事件进行调用.

Jquery不是一个选择

Koh*_*ami 74

这是使其适用于IE11和其他浏览器并考虑未来变化的最佳方法.

var event;
if(typeof(Event) === 'function') {
    event = new Event('submit');
}else{
    event = document.createEvent('Event');
    event.initEvent('submit', true, true);
}

$el.dispatchEvent(event);
Run Code Online (Sandbox Code Playgroud)

  • 默认情况下,事件不会冒泡且不可取消-请参阅https://developer.mozilla.org/zh-CN/docs/Web/API/Event/Event。为了在两种情况下都具有相同的行为,应调用initiEvent('submit',false,false)。 (5认同)
  • 确认在ie11,chrome和firefox工作. (4认同)

小智 42

我只是遇到了同样的问题,但以下似乎在IE11中有效:

var event = document.createEvent("Event");
event.initEvent("submit", false, true); 
// args: string type, boolean bubbles, boolean cancelable
element.dispatchEvent(event);
Run Code Online (Sandbox Code Playgroud)

  • 你必须使用它,如果你想在IE上工作,请参阅https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events#Creating_custom_events和https://msdn.microsoft.com/ en-us/library/ff975247(v = vs.85).aspx目前,这可能是MS更新他们的软件. (9认同)
  • 至少对于'CustomEvent`来说,更加面向未来的解决方案是使用polyfill.但这可能不适用于`Event`构造函数.请参阅/sf/ask/1861728641/,https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent poly fill解决了我在IE 11中使用https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent的问题 (4认同)
  • 另请注意,与Chrome相反,IE不会从禁用的元素中进行分派。 (3认同)

San*_*ath 14

最好使用 polyfil 来解决这个问题。(自定义事件polyfill)

# using yarn 
$ yarn add custom-event-polyfill

# using npm 
$ npm install --save custom-event-polyfill
Run Code Online (Sandbox Code Playgroud)

然后在你的javascript中包含/要求它

import 'custom-event-polyfill';

https://www.npmjs.com/package/custom-event-polyfill