代码之家  ›  专栏  ›  技术社区  ›  Alan

手动创建javascript事件对象

  •  0
  • Alan  · 技术社区  · 14 年前

    假设我有以下代码:

    $('#someid').click(function(event) { myFunction(event); });
    
    function myFunction(event)
    {
       // do something with event
    }
    

    我想测试一下 myFunction() 使用eval语句,而不使用 eval('$("#someid").click()') ;

    有没有一种方法可以在javascript中手动创建一个事件对象来处理eval语句?

    另外,如果MyFunction仅用作事件处理程序,它是否可以始终假定 event 不是空的吗?

    1 回复  |  直到 14 年前
        1
  •  2
  •   Erik Reppen    14 年前

    好吧,假设这是顶部的jquery,那么事件对象不应该是空的。

    事件对象在IE和其他人之间是完全不同的criter,所以除非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中,然后删除右花括号前的最后一个逗号。