使用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 相关文章推荐
js中escape对应的C#解码函数 UrlDecode
Dec 16 Javascript
js实现点击切换TAB标签实例
Aug 21 Javascript
win7下安装配置node.js+express开发环境
Dec 06 Javascript
Javascript 函数的四种调用模式
Nov 05 Javascript
jQuery checkbox选中问题之prop与attr注意点分析
Nov 15 Javascript
jQuery实现点击关注和取消功能
Jul 03 jQuery
关于JavaScript中forEach和each用法浅析
Jul 27 Javascript
vue 实现通过手机发送短信验证码注册功能
Apr 19 Javascript
vue防止花括号{{}}闪烁v-text和v-html、v-cloak用法示例
Mar 13 Javascript
JS 设计模式之:单例模式定义与实现方法浅析
May 06 Javascript
微信小程序实现电子签名功能
Jul 29 Javascript
如何使用JavaScript策略模式校验表单
Apr 29 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
在IIS上安装PHP4.0正式版
2006/10/09 PHP
PHP中使用CURL模拟登录并获取数据实例
2014/07/01 PHP
PDO的安全处理与事物处理方法
2016/10/31 PHP
PHPMailer发送邮件
2016/12/28 PHP
PHP排序算法之希尔排序(Shell Sort)实例分析
2018/04/20 PHP
javascript数字格式化通用类 accounting.js使用
2012/08/24 Javascript
js捕获鼠标右键菜单中的粘帖事件实现代码
2013/04/01 Javascript
验证控件与Button的OnClientClick事件详细解析
2013/12/04 Javascript
js/jquery判断浏览器类型的方法小结
2015/05/12 Javascript
AJAX实现瀑布流触发分页与分页触发瀑布流的方法
2016/05/23 Javascript
JS实用技巧小结(屏蔽错误、div滚动条设置、背景图片位置等)
2016/06/16 Javascript
web前端开发upload上传头像js示例代码
2016/10/22 Javascript
jQuery实现删除li节点的方法
2016/12/06 Javascript
jQuery+CSS3实现点赞功能
2017/03/13 Javascript
Babel 入门教程学习笔记
2018/06/13 Javascript
JavaScript new对象的四个过程实例浅析
2018/07/31 Javascript
微信小程序实现左滑删除效果
2020/11/18 Javascript
深入解析Python编程中super关键字的用法
2016/06/24 Python
Python numpy实现二维数组和一维数组拼接的方法
2018/06/05 Python
python通过zabbix api获取主机
2018/09/17 Python
Python如何调用JS文件中的函数
2019/08/16 Python
python如何实现不用装饰器实现登陆器小程序
2019/12/14 Python
解决python 读取 log日志的编码问题
2019/12/24 Python
python使用openpyxl操作excel的方法步骤
2020/05/28 Python
QT5 Designer 打不开的问题及解决方法
2020/08/20 Python
python3中for循环踩过的坑记录
2020/12/14 Python
CSS3教程:新增加的结构伪类
2009/04/02 HTML / CSS
艺术专业大学生自我评价
2013/09/22 职场文书
给实习单位的感谢信
2014/02/01 职场文书
人力资源部经理岗位职责规定
2014/02/23 职场文书
入学申请自荐信范文
2014/02/26 职场文书
小学二年级学生评语
2014/04/21 职场文书
户外活动总结范文
2014/04/30 职场文书
个人工作总结范文2014
2014/11/07 职场文书
小学思品教学反思
2016/02/20 职场文书
Python实现DBSCAN聚类算法并样例测试
2021/06/22 Python