如演示所示,dispatchEvent不像预期的那样工作。
http://jsfiddle.net/DerekL/V8uEN/
关键部分:
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,它正在工作,但我的不起作用。
发布于 2014-01-13 20:23:06
btn.dispatchEvent(
document.createEvent("MouseEvent")
.initMouseEvent("click", true, true, window, 0,
0, 0, 0, 0,
false, false, false, false,
0, null)
);您的问题是initMouseEvent不返回任何内容。你不能把所有这些都合并成一行。你得把它拆开。
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);在您链接到的演示中就是这样做的。
发布于 2014-01-13 20:27:24
这样做是可行的:
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);https://stackoverflow.com/questions/21100543
复制相似问题