@Pablo Fernandez正確his answer關於順序,但另一個組件是你的元素需要在DOM中。
原因是您正在使事件成爲冒泡事件,並將處理程序附加到document
。那麼爲了讓事件泡到document
,冒泡的元素需要在之內document
。
例子:http://jsfiddle.net/nhsN4/
window.onload = function(){
var element = document.createElement('div');
// add element to the DOM
document.body.appendChild(element);
var evt = document.createEvent("HTMLEvents");
evt.initEvent("myClick", true, false);
// add listener to the document
document.addEventListener("myClick", function(){
alert("myClick event caught");
alert(event.type);
}, false);
// dispatch the event on the element, and it bubbles up to the document
element.dispatchEvent(evt);
};
如果您已經直接添加了處理程序到element
你創建的,那麼你可以沒有它在document
被分派事件。
實施例:http://jsfiddle.net/nhsN4/1/
window.onload = function(){
var element = document.createElement('div');
var evt = document.createEvent("HTMLEvents");
evt.initEvent("myClick", true, false);
// add listener to the element
element.addEventListener("myClick", function(){
alert("myClick event caught");
alert(event.type);
}, false);
element.dispatchEvent(evt);
};