Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用事件构造函数从字符串创建本机事件?_Javascript_Dom_Events_Dom Events - Fatal编程技术网

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谢谢你指出这一点,我在写我的答案时没有看到这一点。我投票赞成复制。