2009-10-23 80 views
2

我目前正在單元測試一些JavaScript,它通過點擊窗口中的某個項目來處理引發的事件。下面是代碼的snipet:如何以編程方式使用Javascript生成window.event?

function someFunction() 
{ 

    var evt = window.event ? window.event : event; 

    if (evt == null) { return; } 

    var nodeElement = evt.srcElement; 

    if (nodeElement == null) { return; } 
    . 
    . 
    . 
} 

我目前的做法是試圖創建在我的測試文件的自定義事件,這將填充window.event所以我至少可以得到測試nodeElement == NULL部分。但我這樣做很困難(不是來自Javascript背景)。我如何實際創建自定義事件(在IE中)?我目前正在使用JsTestDriver進行單元測試,因此沒有使用html文件。我不介意使用jQuery或簡單的Javascript解決方案。

謝謝。

+0

你可以做'$('#some-id')。click()'etc? – alex 2009-10-23 05:14:07

+0

@Alex:我也是jQuery的新手。你介意解釋什麼是某個ID嗎? – BeraCim 2009-10-23 05:17:48

+0

好吧我試過$(#this')。click()和$(#this.document).click()。沒有工作... – BeraCim 2009-10-23 05:32:41

回答

0

我當前寫了關於jQuery中自定義事件的a blog post series。您可以使用.trigger.bind,它非常強大。

3

我肯定會使用jQuery(或其他一些框架)。它會讓你的生活更輕鬆。我確信每個瀏覽器都有不同的觸發事件的方式。

http://docs.jquery.com/Events

使用jQuery你只是像做

$(window).trigger("eventname") 
+0

不知道爲什麼這已被upvoted,但它是完全脫離主題。 – hayavuk 2014-02-03 08:38:15

0

亞歷克斯指出在他的評論,你可以使用jQuery與

$("css selector here").jQueryEventFunction(functionToCall); 

因此,創建事件,以下你的例子,如果你想在點擊標籤時調用someFunction,你可以這樣做:

$("#label-id").click(someFunction); 

現在,如果你想模擬點擊它

$("#label-id").click(); 

這將做到這一點。

編輯對於窗口事件,你可以使用

$(window).click(someFunction); 

將結合在窗口做任何someFunction點擊。如果您撥打$(window).click();,則會模擬點擊事件,呼叫someFunction

+0

@MaKLaV_eS:如果我只是想創建一個窗口事件?據我所知,爲了觸發一個事件,我所需要做的就是在某個地方點擊瀏覽器,它會觸發一個事件。我想捕捉這個事件,所以我至少可以在我的javascript中測試後者的條件。 – BeraCim 2009-10-25 23:36:57

+0

查看編輯答案。希望這是你想要的。 – 2009-10-26 08:22:43

+0

@MaKLaV_eS:感謝您的更新。我試過了你的代碼,並且也遵循了http://docs.jquery.com/Events/click中的例子,但它仍然不起作用。看起來問題與JsTestDriver本身有關。 – BeraCim 2009-10-26 23:18:19