使用JS取得焦点(focus)元素代码


Posted in Javascript onMarch 22, 2014

对于良好的用户体验来说,网站/web app的可访问性和可用性,以及功能 都是至关重要的。
当我们的网站运行良好/体验很好的时候,用户是意识不到的,但我们做得不好时他们肯定会感觉到。 应用程序的可用性和可访问性的一个重要组成部分是输入焦点(focus)的处理,但这又是开发人员常常会忽视的一点。

对输入焦点处理很差的一个例子: 在点击一个链接以后打开一个窗口,但却不将光标聚焦到窗口中的任何元素内。 甚至更糟的是: 聚焦到模态窗口中的某个元素,但在关闭以后焦点照样不返回。 理想情况下,在触发链接时会保存一个引用,然后将光标聚焦到新窗口,并在窗口关闭时把光标重新移回去。

但假如你不知道输入光标现在在哪个元素上怎么办? 通过 document.activeElement 属性我们可以取得当前文档中获得焦点的元素!

The JavaScript

使用 document.activeElement 来查找当前选中的元素是很容易的事:

var focusedElement = document.activeElement; /* 比如某个示例: 
var triggerElement = document.activeElement; 
myModal = new MyModal({ 
onOpen: function() { 
this.container.focus(); 
}, 
onClose: function() { 
triggerElement.focus(); 
} 
}); 
*/

这个属性不仅在常规输入元素上可用,包括表单字段或 <a> 标签链接,而且只要设置了 tabIndex 属性的任意元素都是可用的。

我喜欢 document.activeElement 的原因是,不需要使用事件监听或委托监听器来追踪记录下那个元素获得了焦点 —— 您可以随时获取这个属性。 当然在使用这样的特性之前你应该做大量的测试—— 是否在跨浏览器或竞态条件下出什么BUG。 总而言之,我对它很满意,觉得它非常可靠!

Javascript 相关文章推荐
JavaScript学习笔记(十)
Jan 17 Javascript
js 函数的副作用分析
Aug 23 Javascript
js中如何把字符串转化为对象、数组示例代码
Jul 17 Javascript
javascript获得当前的信息的一些常用命令
Feb 25 Javascript
使用jQuery调用XML实现无刷新即时聊天
Aug 07 Javascript
node+express制作爬虫教程
Nov 11 Javascript
详解javascript表单的Ajax提交插件的使用
Dec 29 Javascript
Vue+Webpack完美整合富文本编辑器TinyMce的方法
Nov 30 Javascript
vue在index.html中引入静态文件不生效问题及解决方法
Apr 29 Javascript
如何让微信小程序页面之间的通信不再变困难
Jun 03 Javascript
Vue+tracking.js 实现前端人脸检测功能
Apr 16 Javascript
vue2.0实现列表数据增加和删除
Jun 17 Javascript
查找Oracle高消耗语句的方法
Mar 22 #Javascript
利用JavaScript检测CPU使用率自己写的
Mar 22 #Javascript
JSONP跨域的原理解析及其实现介绍
Mar 22 #Javascript
一个网页标题title的闪动提示效果实现思路
Mar 22 #Javascript
js获得网页背景色和字体色的方法
Mar 21 #Javascript
页面装载js及性能分析方法介绍
Mar 21 #Javascript
Js冒泡事件详解及阻止示例
Mar 21 #Javascript
You might like
针对初学PHP者的疑难问答(2)
2006/10/09 PHP
PHP中$_SERVER的详细参数与说明
2008/07/29 PHP
PHP面向对象的进阶学习(抽像类、接口、final、类常量)
2012/05/07 PHP
在PHP中使用redis
2013/11/04 PHP
降低PHP Redis内存占用
2017/03/23 PHP
PHP实现正则表达式分组捕获操作示例
2018/02/03 PHP
PHP实现将base64编码字符串转换成图片示例
2018/06/22 PHP
Laravel解决nesting level错误和隐藏index.php的问题
2019/10/12 PHP
一行代码告别document.getElementById
2012/06/01 Javascript
js获取下拉列表框中的value和text的值示例代码
2014/01/11 Javascript
JavaScript中获取高度和宽度函数总结
2014/10/08 Javascript
jquery实现滑屏大图定时收缩为小banner图片的广告代码
2015/09/02 Javascript
基于JavaScript如何实现私有成员的语法特征及私有成员的实现方式
2015/10/28 Javascript
纯JavaScript基于notie.js插件实现消息提示特效
2016/01/18 Javascript
JavaScript仿商城实现图片广告轮播实例代码
2016/02/06 Javascript
ionic实现滑动的三种方式
2016/08/27 Javascript
Angular2入门教程之模块和组件详解
2017/05/28 Javascript
AngularJS实用基础知识_入门必备篇(推荐)
2017/07/10 Javascript
vue项目base64字符串转图片的实现代码
2018/07/13 Javascript
详解jQuery获取特殊属性的值以及设置内容
2018/11/14 jQuery
vue打包之后生成一个配置文件修改接口的方法
2018/12/09 Javascript
利用QT写一个极简单的图形化Python闹钟程序
2015/04/07 Python
Python实现返回数组中第i小元素的方法示例
2017/12/04 Python
Django Rest framework之权限的实现示例
2018/12/17 Python
python执行CMD指令,并获取返回的方法
2018/12/19 Python
Python中SQLite如何使用
2020/05/27 Python
Python如何使用ElementTree解析xml
2020/10/12 Python
纽约手袋品牌:KARA
2018/03/18 全球购物
Exoticca英国:以最优惠的价格提供豪华异国情调旅行
2018/10/18 全球购物
学生处主任岗位职责
2013/12/01 职场文书
建筑安全员岗位职责
2014/03/13 职场文书
工程建设实施方案
2014/03/14 职场文书
听课评语大全
2014/04/30 职场文书
巾帼建功标兵事迹材料
2014/05/11 职场文书
【DOTA2】总决赛血虐~ XTREME GAMING vs MAGMA - OGA DOTA PIT 2022 CN
2022/04/02 DOTA
Java版 简易五子棋小游戏
2022/05/04 Java/Android