2011-03-31 61 views
2

我无法弄清楚如何去做。这似乎是这样的:将自定义事件绑定到JavaScript对象?

function MyObject() { 
    this.fireEvent("myEvent"); 
} 

,然后在单独的JavaScript文件:

var obj = new MyObject(); 
obj.addEventListener("myEvent", function() { 
    alert("Event Fired"); 
}); 

但是,当然,这是行不通的。我的问题是,我会如何去做类似的事情?

+0

你问,你怎么可以在JavaScript中做事件绑定/触发,或者你正在努力与一组特定的工具? – skarmats 2011-03-31 20:46:39

回答

4

在您的示例中,您将在构造函数中立即触发事件(在附加事件侦听器之前)。尝试将发射逻辑移入单独的功能。

更新

而且,好像你不正确射击的事件。有关如何以跨浏览器方式正确触发事件的更多信息,请参阅this article。从那篇文章:

function fireEvent(element,event){ 
    if (document.createEventObject){ 
     // dispatch for IE 
     var evt = document.createEventObject(); 
     return element.fireEvent('on'+event,evt) 
    } 
    else{ 
     // dispatch for firefox + others 
     var evt = document.createEvent("HTMLEvents"); 
     evt.initEvent(event, true, true); // event type,bubbling,cancelable 
     return !element.dispatchEvent(evt); 
    } 
} 
+1

好吧,我实现了Firefox等的部分(我根本没有针对IE)。然而从那篇文章看来,'元素'变量需要是一个DOM对象。在我的情况下,它不是,它是一个JavaScript对象。我尝试过使用“this.initEvent(...”但没有运气 – blabus 2011-03-31 21:05:08

+1

这是一个不幸的限制,作为一个解决方法,你可以从'body'元素中激发自定义事件,并从相同的事件中听取事件 – Jacob 2011-03-31 21:27:40

+0

啊!好的,我会试试看看它是如何工作的,谢谢! – blabus 2011-03-31 23:44:42

相关问题