场景:
常常会碰到这样的场景,需要加强对键盘的支持,比如搜索提示支持键盘导航,以及数据列表支持pagedown等翻页,
而这些数据的容器常常都是div,为了效率考虑,我们一般不在document上监控键盘,而直接在容器div上监控:
div.on("keydown",function(){
//上
//下
});
并且在衔接过程中,直觉得使用
div.focus()
来使得容器获得焦点,试图使得div处于焦点内可以接受键盘输入,但是很不幸的是 firefox 并不可行。
规范与绕行:
根据 w3c html5 规范
只有以下元素才可以获得焦点接受键盘输入,其他元素只能获得冒泡过来的键盘事件:
* a elements that have an href attribute
* link elements that have an href attribute
* button elements that are not disabled
* input elements whose type attribute are not in the Hidden state and that are not disabled
* select elements that are not disabled
* textarea elements that are not disabled
* command elements that do not have a disabled attribute
* Elements with a draggable attribute set, if that would enable the user agent to allow the user to begin a drag operations for those elements without the use of a pointing device
那么普通的 div focus 方法就被 firefox 忽略了,但是当 div 设置了属性 tabindex
(强制获得焦点顺序)或者 contenteditable
(使得区域可编辑)时,firefox 激活了该 div 的焦点支持,只不过这时候当div获得焦点时,div周围会有环绕虚线(可以设置outline
:none清除)。
换个角度:
其实我们不需一定要div自身获得焦点支持键盘事件,只要其内的子元素获得焦点接受事件,div这边只需捕获冒泡过来的事件即可,那么我们可以在容器内生成一个高宽为0的 带有 href 属性的a节点(同样注意 outline 清除),当需要div监控键盘时,只要调用 div 内的 a.focus() ,那么键盘输入就会被a接受,并冒泡到父容器 div,一样可以达到效果。
demo
- 大小: 5.3 KB
分享到:
相关推荐
如描述中提到的,全局键盘监控可能会与杀毒软件冲突,因为这类软件通常也会设置键盘钩子来检测恶意行为。所以在开发这样的功能时,需要考虑到兼容性和安全性,避免不必要的误报或冲突。 8. **异常处理**: 实现...
本主题聚焦于“VBHOOK实现键盘监控”,这涉及到Windows操作系统中的钩子(Hook)技术,这是一种允许程序拦截和处理特定事件(如键盘输入)的技术。 首先,我们需要了解什么是钩子。在Windows API中,钩子是一种机制...
在这里,我们关注的是通过Windows钩子来实现鼠标键盘监控的程序源码和示例,这些资源适用于Visual Studio 2010及以上版本。源码提供了直接运行的exe程序,使得开发者可以快速理解和应用这项技术。 【知识点详解】:...
在Qt编程中,键盘映射和焦点移动是两个重要的概念,尤其在创建用户界面(UI)应用程序时。本文将深入探讨这两个主题,并结合ARM Linux环境和事件过滤器进行讲解。 首先,让我们理解“qt键盘映射”。在Qt框架中,...
"KeyTrack"可能是一个键盘监控软件,用于记录并分析用户的按键行为。该软件可能包含以下组件或功能: 1. **键盘事件捕获模块**:这是程序的核心部分,用于实时监听并记录键盘事件,包括按键按下、释放以及任何组合...
运行后可以在后台进行监听键盘时间。后台支持打印记录,现在可以打出键盘编号,不用设置焦点就能监听键盘所有操作。
标题中的“快捷键与按钮监控按键信息”是指一种软件功能,它允许用户通过特定的快捷键(如Ctrl+S和Ctrl+E)来启动和停止对键盘输入的监控。这种功能通常用于开发、测试或调试过程中,以便了解用户在交互时按下哪些键...
这个项目涉及到了C#编程语言与Windows API的深度结合,尤其是利用钩子(Hook)技术来实现对键盘和鼠标的监控。下面将详细阐述相关知识点。 1. **C#编程语言**:C#是由微软开发的一种面向对象的编程语言,广泛应用于...
当我们在电脑上工作或打字时,有时会突然发现键盘输入并未在当前活动窗口进行,而是被其他程序或者窗口抢占了焦点,这可能会导致输入的信息错乱,影响工作效率。这款工具的主要功能就是帮助用户定位并找出是哪个程序...
键盘钩子是Windows操作系统提供的一种机制,允许应用程序监控其他进程的键盘事件。这通过安装一个系统级的钩子实现,即`SetWindowsHookEx`函数。当键盘事件发生时,系统会调用预先设定的钩子函数,这样开发者就能在...
在C#中,可以使用SetWindowsHookEx函数创建全局键盘钩子,这样即使焦点不在当前应用,也能捕获到键盘事件。 3. **WH_KEYBOARD_LL钩子**:这是用来实现低级键盘钩子的类型,它能够捕获所有线程的键盘输入,不论它们...
窗口焦点是指用户与哪个应用程序交互,即鼠标点击或键盘输入作用于哪个窗口。操作系统会维护一个当前活动窗口,也就是拥有焦点的窗口。桌面焦点检测工具通过监听操作系统级别的事件,持续跟踪这个焦点的变化,当有新...
全局HOOK是一种技术,允许程序在系统级别捕获键盘事件,无论焦点在哪个应用程序上。 **全局键盘HOOK简介** 全局键盘HOOK是一种系统级的钩子,它可以在操作系统中设置,以便在任何进程中产生的键盘事件(如按键按下...
标题中的“用C#编写的一个键盘钩子用于记录键盘输入”指的是使用C#编程语言创建一个程序,该程序通过设置...通过这个项目,开发者可以学习到如何在C#环境中进行系统级别的交互,以及如何实现跨应用程序的键盘监控功能。
在C#编程中,控件的焦点管理是用户界面交互中的关键部分,它涉及到控件何时获取或失去用户的输入注意力。...在处理TextBox这样的输入控件时,这两个事件尤为重要,因为它们允许我们实时监控和处理用户的输入行为。
这种技术通常用于实现系统级的键盘监控、热键设置或特定输入处理,例如本例中的扫描枪输入识别。 在Windows API中,全局键盘钩子通过`SetWindowsHookEx`函数实现,它需要指定一个钩子类型(在此为`WH_KEYBOARD_LL`...
总结来说,"易语言后台暗码监控"涉及到的技术包括:易语言编程、键盘钩子的设置与回调处理、系统API的调用(如安装和释放钩子、拷贝内存、获取句柄)、以及可能的事件反馈机制。这些技术的组合应用,使得开发者能够...
该实例程序使用Qt进行,windows的键盘后台监听,即使Qt桌面程序失去焦点在后台运行,也会捕捉到按键事件 这个程序使用windows的钩子(hook)实现的,Qt官方没有相关的实现 关于编译,我用的是Qt5.9.7 MinGW32位,我...