2011-03-31 84 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

相關問題