繁体   English   中英

检测焦点事件是否由用户/浏览器或jQuery触发

[英]Detect if focus event was triggered by user/browser or jQuery

我正在尝试检测焦点事件是否由用户触发(手动)。 说到click事件,可以检查处理程序方法中是否存在event.originalEvent

typeof event.originalEvent != "undefined"

不幸的是,它对于焦点事件表现不同。 请检查示例

尝试单击第一个<input> ,然后单击第二个输入的“触发单击”按钮,您将看到click undefined ,这意味着event.originalEvent不存在。 然后尝试单击第一个<input>然后单击第二个输入的“trigger focus”按钮,您将看到focus objectevent.originalEvent出现event.originalEvent

  • 如何检测焦点事件是否由用户触发(非编程)?

应用mousedown事件来检查它是否是用户操作:

 $(document).ready(function() { var isUserClick = false; $("input").mousedown(function() { isUserClick = true; }); $("input").on("click focus blur", function(event) { console.log(event.type, typeof event.originalEvent, isUserClick ? 'user' : 'script'); setTimeout(function() { isUserClick = false; }, 200); }); $("button").click(function() { $("input." + $(this).attr("class")).trigger($(this).data("event")); }); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> FIRST: <input class="first" /> <button class="first" data-event="click">trigger click</button> <button class="first" data-event="focus">trigger focus</button> <button class="first" data-event="blur">trigger blur</button> <br> <br> SECOND: <input class="second" /> <button class="second" data-event="click">trigger click</button> <button class="second" data-event="focus">trigger focus</button> <button class="second" data-event="blur">trigger blur</button> <br> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM