以前问过这个问题但是在jQuery的上下文中。在 jQuery 中,我们可以通过事件对象(link)的 originalEvent属性来检查它,它会告诉它是手动还是已编程的事件。
就我而言,我使用 Javascript事件监听器和触发器。在这种情况下,我们能否区分两种事件 (编程和手动)?
如果没有那么任何变通方法?吗
我的听众:
function setUpListeners(){
_cellViewWrapper.addEventListener('mousedown',mouseDownHandler,false);
_cellViewWrapper.addEventListener('mouseover',mouseEnter,false);
_cellViewWrapper.addEventListener('blur',blurHandler,true);
_cellViewWrapper.addEventListener('focus',focusEventHandler,true);
}`
触发器使用案例: 1.)
if(!IE_FLAG) hidePicker();
//if browser is internet explorer
else{
//if blur is allowed then hide Picker
if(_ieBlurAllowed) hidePicker();
//if blur is not allowed -- keep focus on picker input
//triggering the focus event here
else blurredElement.focus(); /
}
2。)if((inputElem !== _focussedInput)) setTimeout(function(){ inputElem.focus(); },10);
还有更多......
答案 0 :(得分:11)
在最新的浏览器中, Event.isTrusted 可用于此特定用例。根据{{3}}:
Event接口的isTrusted只读属性是一个布尔值,当事件由用户操作生成时为true,当事件由脚本创建或修改或通过dispatchEvent调度时为false。
您可以简单地检查任何事件处理程序:
if (e.isTrusted) {
/* The event is trusted. */
} else {
/* The event is not trusted. */
}
浏览器支持:Chrome 46.0,Firefox(最新),Opera 33,Safari& IE(不支持)
答案 1 :(得分:5)
[解决方法] Javascript:检查是否event.screenX
& event.screenY
非零。
var button = document.getElementsByTagName('button')[0];
button.onclick = function(e) {
if(e.screenX && e.screenX != 0 && e.screenY && e.screenY != 0){
alert("real button click");
}
}
答案 2 :(得分:1)
我知道如何在jQuery中做到这一点
您可以通过选中e.isTrigger
$(".lol").click(function(e){
console.log(e)
alert("Is triggered: " + (e.isTrigger ? true: false))
})
$(".trigger-lol").click(function(e){
$(".lol").trigger("click")
})

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="lol">lol</div>
<div class="trigger-lol">Trigger lol</div>
&#13;
答案 3 :(得分:0)
这对我有用
if ((event.originalEvent.isTrusted === true && event.originalEvent.isPrimary === undefined) || event.originalEvent.isPrimary === true) {
//Hey hooman it is you
//Real CLick
}