JavaScript:如何检查鼠标单击事件是模拟还是本机? (非jquery方式)

时间:2013-04-23 20:33:00

标签: javascript javascript-events

使用jQuery很容易。纯粹的JavaScript不是,至少不容易找出如何。 if (event.clientX && event.clientY) { ... }提供了一种检测,但它不是100%准确。

2 个答案:

答案 0 :(得分:3)

的一种方式,但它是相当有争议的恕我直言。试试这个:

HTMLElement.prototype.dispatchEvent = (function(dispev) {
    return function(event) {
        // Do your stuff
        dispev.call(this, event);
    };
})(HTMLElement.prototype.dispatchEvent);

通过这种方式,您可以在调度以编程方式生成的事件时捕获对dispatchEvent的每次调用。当然,这会减慢调度速度,但不应该是一个问题,除非你试图解雇很多事件。

在IE8中,您必须替换Element.prototype.fireEvent,而在IE7及更低版本中则无法对其进行任何操作。

答案 1 :(得分:0)

Event.isTrusted可以使用到令人满意的水平。