Javascript 检测焦点事件是否由用户/浏览器或jQuery触发
我试图检测焦点事件是否由用户(手动)触发。 当涉及到Javascript 检测焦点事件是否由用户/浏览器或jQuery触发,javascript,jquery,jquery-events,Javascript,Jquery,Jquery Events,我试图检测焦点事件是否由用户(手动)触发。 当涉及到click事件时,可以检查处理程序方法中是否存在event.originalEvent: typeof event.originalEvent != "undefined" 不幸的是,焦点事件的行为不同。 请检查一下电话号码 尝试单击第一个,然后单击第二个输入的“触发器单击”按钮,您将看到单击未定义的,这意味着事件.originalEvent不存在。 然后尝试单击第一个,然后单击第二个输入的“触发焦点”按钮,您将看到焦点对象,事件。这次出现O
click
事件时,可以检查处理程序方法中是否存在event.originalEvent
:
typeof event.originalEvent != "undefined"
不幸的是,焦点事件的行为不同。
请检查一下电话号码
尝试单击第一个
,然后单击第二个输入的“触发器单击”按钮,您将看到单击未定义的,这意味着事件.originalEvent
不存在。
然后尝试单击第一个
,然后单击第二个输入的“触发焦点”按钮,您将看到焦点对象
,事件。这次出现OriginaleEvent
- 如何检测焦点事件是否由用户触发(不是以编程方式)
应用mousedown
事件检查它是否是用户操作:
$(文档).ready(函数(){
var isUserClick=false;
$(“输入”).mousedown(函数(){
isUserClick=true;
});
$(“输入”)。打开(“单击焦点模糊”,函数(事件){
console.log(event.type,typeof event.originalEvent,isUserClick?'user':'script');
setTimeout(函数(){
isUserClick=false;
}, 200);
});
$(“按钮”)。单击(函数(){
$(“输入”。+$(this.attr(“类”)).trigger($(this.data(“事件”));
});
});代码>
第一:
触发点击
触发焦点
触发模糊
第二:
触发点击
触发焦点
触发模糊
这可能有帮助:您可以使用特殊事件吗?与chrome(未使用其他浏览器测试)下的custom_blur
作为blur
别名一样,“event.originalEvent.sourceCapabilities”在从脚本触发时为空。警告,它只捕获“click”访问,不考虑使用tab键跳入字段。