我使用以下代码提交表单:
element.dispatchEvent(new Event("submit"));
检查器返回错误:
对象不支持此操作
这适用于 Chrome。
此命令的目的是使部门在单击时调用窗体上的提交事件。
Jquery不是一个选项
这是使其适用于IE11和其他浏览器并考虑未来更改的最佳方法。
var event;
if(typeof(Event) === 'function') {
event = new Event('submit');
}else{
event = document.createEvent('Event');
event.initEvent('submit', true, true);
}
$el.dispatchEvent(event);
我刚刚遇到了同样的问题,但以下内容似乎适用于IE11:
var event = document.createEvent("Event");
event.initEvent("submit", false, true);
// args: string type, boolean bubbles, boolean cancelable
element.dispatchEvent(event);
最好使用polyfil来解决此问题。(自定义事件填充)
# using yarn
$ yarn add custom-event-polyfill
# using npm
$ npm install --save custom-event-polyfill
然后在你的JavaScript中包含/要求它
import 'custom-event-polyfill'
;
https://www.npmjs.com/package/custom-event-polyfill
我组装了各种方法的零碎部分并使其工作:
var customEvent = document.createEvent('HTMLEvents');
customEvent.initEvent('myCustomEvent', true, true);
document.dispatchEvent(customEvent);
老实说,这对我来说没有多大意义。它在文档上创建一个事件(命名它HTMLEvents
似乎是必需的),然后用另一个名称初始化该事件。如果有人可以更好地解释这一点,请在下面添加评论,以便将其合并到答案中。
无论如何,我都可以使用标准事件侦听器在IE11(和现代浏览器)中收听此自定义事件:
document.addEventListener('myCustomEvent', function(){
console.log('Event received.');
});