说我有以下代码:
$('#someid').click(function(event) { myFunction(event); });
function myFunction(event)
{
// do something with event
}
我想用eval语句测试myFunction()
,而不是像使用eval('$("#someid").click()')
那样;
有没有办法在javascript中手动创建一个可以使用eval语句的事件对象?
此外,如果myFunction仅用作事件处理程序,它是否始终假定event
不为空?
答案 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中,然后在结束花括号之前删除最后一个逗号。