2010-10-12 85 views
0

說我有下面的代碼:手動創建JavaScript事件對象

$('#someid').click(function(event) { myFunction(event); }); 

function myFunction(event) 
{ 
    // do something with event 
} 

而且我想用一個eval語句來測試myFunction(),沒有做這樣的事情使用eval('$("#someid").click()');

有沒有辦法在javascript中手動創建一個事件對象,這將與eval語句一起使用?

另外,如果myFunction僅用作事件處理程序,它可以始終假定event不爲空?

回答

2

好吧,假設這是頂部的JQuery,事件對象不應該爲空。

事件對象是IE和其他人之間完全不同的生物,所以除非JQ 100%規範化對象(我認爲它從它的外觀構建它自己的事件對象),但它的屬性可能會有所不同,JQuery不會在瀏覽器之間使用。爲了製造你自己的事件對象,我想我只需要使用一個for x in循環來查看裏面的內容並構建一個模擬它的對象哈希。

因此,在這個頁面是這樣的:

$('#adzerk1').click(function(event){ 
    console.log('fakeEvent = {'); 
    for(x in event){ console.log(x + ':' + event[x] + ',\n')} 
    console.log('}'); 
}); 

$('#adzerk1').click(); 

將返回所有屬性和它們的值在Firebug的控制檯框事件。但是,您必須使其遞歸併測試才能獲得事件屬性的所有內部屬性,而這些屬性本身就是對象。否則,我已經設置好了,所以你只需要將結果剪切並粘貼到你的JS中,然後刪除最後一個逗號,然後在關閉的大括號之前。

+0

有趣。所以基本上,在我的測試代碼中使用.click()可能是設置適當事件對象的最佳方法。 – Alan 2010-10-12 14:41:54