1

可能重复:
在 Jquery 中,如何区分程序点击和用户点击?

根据浏览器的不同,有几种方法可以使用 javascript 来“点击”链接。

IE(IE9 之前)

元素.click(); element.fireEvent('点击');

其他浏览器使用:

element.dispatchEvent(evt) 其中 evt 是鼠标点击事件。

我想确保实际的最终用户操作是特定链接上事件的发起者。我现在使用的技术是覆盖这些方法并过滤掉点击事件,但是在使用它们之前将方法恢复到原型版本很容易失败。

是否有任何可靠的跨浏览器方法来确定单击事件是否由于直接用户操作而触发(他们实际上单击了元素)。

4

1 回答 1

2

在 Chrome、Firefox 和 Opera 中,您可以使用Event.detail属性,如果它不是由initUIEvent().

element.addEventListener('click', clickHandler, false);
function clickHandler (e) {
    if(e.detail > 0) {
        /* 1 = user click */
    } else {
        /* 0 = JS click */
    }
    return;
}

不幸的是,在 IE9 中的两种情况下都e.detail返回1(并且在较旧的 IE 中根本不起作用)。看来,事件属性在 IE 中都是完全相同的(IE<9 包括,10 我不知道),尽管点击事件的来源。

于 2012-09-14T20:51:57.693 回答