Javascript 如何使用事件构造函数从字符串创建本机事件?
Javascript 如何使用事件构造函数从字符串创建本机事件?,javascript,dom,events,dom-events,Javascript,Dom,Events,Dom Events,document.createEvent已被弃用。它允许使用这些事件的字符串名称创建本机浏览器事件。现在推荐的方法是使用 i、 e.createEvent(“HtmlEvents”)现在已成为新的HtmlEvent() 是否可以通过使用字符串的事件构造函数创建这些事件?i、 e.newcustomevent(“HtmlEvents”)?我认为这将对您有所帮助 var event = new Event('build'); // Listen for the event. elem.addEve
document.createEvent
已被弃用。它允许使用这些事件的字符串名称创建本机浏览器事件。现在推荐的方法是使用
i、 e.createEvent(“HtmlEvents”)
现在已成为新的HtmlEvent()
是否可以通过使用字符串的事件构造函数创建这些事件?i、 e.
newcustomevent(“HtmlEvents”)
?我认为这将对您有所帮助
var event = new Event('build');
// Listen for the event.
elem.addEventListener('build', function (e) { /* ... */ }, false);
// Dispatch the event.
elem.dispatchEvent(event);
用于创建自定义事件
var event = new CustomEvent('build', { detail: elem.dataset.time });
function eventHandler(e) {
console.log('The time is: ' + e.detail);
}
甚至事件构造函数也只是全局
窗口对象上的键:
函数createEvent(类型,…eventArgs){
返回新窗口[类型](事件参数);
}
//示例:
console.log(
createEvent(“键盘事件”、“键盘事件名称”),
createEvent(“鼠标事件”、“鼠标事件名称”),
);
有一个例子…@HereticMonkey问题是,如果我创建一个新的CustomEvent(“HtmlEvents”)
,它的行为是否会与使用document.createEvent(“HtmlEvents”)
创建的事件相同?否,因为没有这样的内置事件类型HtmlEvents
。我是说,这很容易检查,对吗?只需在控制台中运行document.createEvent(“HtmlEvents”)
,并将输出与new CustomEvent(“HtmlEvents”)
进行比较,这就是问题所在。我需要使用字符串作为旧代码的迁移来创建这些事件。当然,我可以为每个事件创建一个带有案例的巨型switch语句,但我想避免这种情况。@HereticMonkey有一点,但旧的事件类型通常具有复数名称。我试着搜索所有名字的列表,但还没有找到。要么这样,要么迁移1500个测试。不幸的是,它没有。我需要知道如何使用字符串名称创建本机事件类型,即newmouseevent
或newhtmlevent
。我需要迁移使用这些名称的旧代码。。。为什么createEvent
名称是复数的,而构造函数不是复数的*编辑:*看起来两者都是。这正是建议复制的答案所说的。@HereticMonkey谢谢你指出这一点,我在写我的答案时没有看到这一点。我投票赞成复制。