dispatchEvent не работает
Как показано в демо, 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.
Я не знаю, в чем проблема, так как я нашел демо почти с тем же кодом, и он работает, но не мой.
2 ответа:
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);
Вот как это делается в демо, на которое вы ссылаетесь.
Это работает:
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);