首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dispatchEvent不工作

dispatchEvent不工作
EN

Stack Overflow用户
提问于 2014-01-13 20:17:10
回答 2查看 30.9K关注 0票数 7

如演示所示,dispatchEvent不像预期的那样工作。

http://jsfiddle.net/DerekL/V8uEN/

关键部分:

代码语言:javascript
复制
btn.dispatchEvent(
    document.createEvent("MouseEvent")
    .initMouseEvent("click", true, true, window, 0,
        0, 0, 0, 0,
        false, false, false, false,
        0, null)
);

加载1秒后会弹出警报,但不会出现,控制台中会出现错误:

Uncaught InvalidStateError: Failed to execute 'dispatchEvent' on 'EventTarget': The event provided is null.

我不知道问题出在哪里,因为我发现了一个几乎相同的代码的demo,它正在工作,但我的不起作用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-13 20:23:06

代码语言:javascript
复制
btn.dispatchEvent(
    document.createEvent("MouseEvent")
    .initMouseEvent("click", true, true, window, 0,
        0, 0, 0, 0,
        false, false, false, false,
        0, null)
);

您的问题是initMouseEvent不返回任何内容。你不能把所有这些都合并成一行。你得把它拆开。

代码语言:javascript
复制
var mEvent = document.createEvent("MouseEvent");
mEvent.initMouseEvent("click", true, true, window, 0,
    0, 0, 0, 0,
    false, false, false, false,
    0, null);

btn.dispatchEvent(mEvent);

在您链接到的演示中就是这样做的。

票数 10
EN

Stack Overflow用户

发布于 2014-01-13 20:27:24

这样做是可行的:

代码语言:javascript
复制
var btn = document.querySelector("button");
btn.addEventListener("click", function () {
   alert("Clicked.");
});

setTimeout(function () {
  var mEvent = document.createEvent("MouseEvent");
  mEvent.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);

  btn.dispatchEvent(mEvent);
}, 1000);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21100543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档