UFO
述:
1.问题描述: windos系统输入框输入时禁用鼠标点击事件,输入完成后1s左右恢复点击事件,仅禁止点击不影响鼠标其他事件
1. 1 问题出现的环境:虚拟机的win10系统
1. 2 问题出现过程: 某天,编辑input时,发现当input输入字(不管中英文)后,再点击其他元素会发现并不会触发失焦事件,一般是双击才会触发,一开始是以为什么设置导致了双击,结果去掉所有事件绑定都是如此,空白页面仅添加input元素也是如此,以及试了一堆其他的网站的input元素均是这样,搞了很久都没反应过来,再次慢慢观察,发现输入后,快速点击是没法使得input触发失焦事件的,然后以为是做了什么延迟触发,但是没道理空白页面也有这些设置,然后没头脑去试了下系统自带的input输入框,奶奶的熊,竟然和页面元素一个熊样,还以为是自己写了什么牛皮的东西自动实现了延迟触发,结果是系统,但是宿主机没这个问题,再试了linux桌面版的,也没这个问题,暂时没其他版本的windos,仅在此记录,非解决问题,其实有点像输入信息后,拦截了点击事件,其他事件正常,等待一会就恢复接收点击事件,能直接反映出这个问题就是,当你不断的输入文字时,点击其他元素或者窗口,是完全没反应的,整个系统的点击事件完全给吞没掉,但是其他事件却是可以触发的,比如你移动到某一元素,其相关的hover事件是能接收到的,毕竟现在得到的信息来看,均指向了windos系统,那么windos对于鼠标点击也是有事件的,这不禁让我想起以前做的windos窗口,那么是否存在了一些程序再输入框时采取了禁用鼠标单击事件,然后在输入后延迟到一定时间在开放鼠标单击事件,下一步的调查方向就在于哪些程序监控了input的输入而增加了这个的设置,要是网页的那还好找,windos的还得啃一段指令,搜索网上如何在Windows上防止鼠标单击事件找到了一段,但是仅是说明了可能的调用方式,但是并没揪出相关监控程序的方法,原文如下:
A [low-level mouse hook](https://docs.microsoft.com/en-us/previous-versions/windows/desktop/legacy/ms644986(v=vs.85)) can eat mouse events. [`SendInput`](https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-sendinput) can generate mouse input events.
You would have to set a flag somewhere so you don't eat your own fake input events.
Keep in mind that `SendInput` is not perfect (can be detected by other hooks) and playing with the input system like this is usually not the best solution. Adding 500ms (or some other delay) to every mouse click is going to be very annoying for your users.
It is better to use [UI Automation](https://docs.microsoft.com/en-us/windows/win32/winauto/entry-uiauto-win32) to get information about UI element states in other applications...