有些网站主会模拟用户的行为触发click事件?
如果这个事件是jQuery模拟的,那么可以通过检测event.originalEvent是否存在来实现。
但是网站主完全可以通过createEvent()模拟一个Event,使它更像是真实的。
到这里我们发现,通过我们自己的Javascript已经不可能检测事件的真实性了,只有等浏览器出手。查了stackOverflow之后发现,浏览器还真的出手了。
根据DOM Level 3 Events标准,在IE9+和firefox中,开始支持event.isTrusted属性,如果是用户发生的,就是true,否则就是false,并且这个属性不能被修改。参见:
http://www.w3.org/TR/DOM-Level-3-Events/
http://msdn.microsoft.com/en-us/library/ie/ff974948%28v=vs.85%29.aspx
http://help.dottoro.com/ljoljvsn.php
目前chrome也就是webkit内核还不支持此属性,但是相信不久以后,一定会支持的。