手动创建javascript事件对象

时间:2010-10-12 04:13:35

标签: javascript

说我有以下代码:

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

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

我想用eval语句测试myFunction(),而不是像使用eval('$("#someid").click()')那样;

有没有办法在javascript中手动创建一个可以使用eval语句的事件对象?

此外,如果myFunction仅用作事件处理程序,它是否始终假定event不为空?

1 个答案:

答案 0 :(得分:2)

好吧,假设顶部是JQuery,事件对象不应该为null。

事件对象是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中,然后在结束花括号之前删除最后一个逗号。