假设我有以下代码:
$('#someid').click(function(event) { myFunction(event); });
function myFunction(event)
{
// do something with event
}
我想测试myFunction()
使用 eval 语句,而不执行类似使用 eval('$("#someid").click()')
的操作;
有没有办法在 JavaScript 中手动创建一个可以与 eval 语句一起使用的事件对象?
此外,如果 myFunction 仅用作事件处理程序,它是否可以始终假设 event
不为空?
最佳答案
好吧,假设 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 中,然后删除右大括号之前的最后一个逗号。
关于javascript - 手动创建 JavaScript 事件对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3911640/