使用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 相关文章推荐
Json对象与Json字符串互转(4种转换方式)
Mar 27 Javascript
extjs表格文本启用选择复制功能具体实现
Oct 11 Javascript
Node.js插件的正确编写方式
Aug 03 Javascript
javascript实现滑动解锁功能
Dec 31 Javascript
Angular用来控制元素的展示与否的原生指令介绍
Jan 07 Javascript
jquery控制表单输入框显示默认值的方法
May 22 Javascript
简介JavaScript中的push()方法的使用
Jun 09 Javascript
利用Angularjs中模块ui-route管理状态的方法
Dec 27 Javascript
微信小程序 input表单与redio及下拉列表的使用实例
Sep 20 Javascript
实例讲解vue源码架构
Jan 24 Javascript
vue中使用rem布局代码详解
Oct 30 Javascript
vue自定义指令实现仅支持输入数字和浮点型的示例
Oct 30 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
用HTML/JS/PHP方式实现页面延时跳转的简单实例
2016/07/18 PHP
asp.net和php的区别点总结
2019/10/10 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
2020/03/26 PHP
分享一个自定义的console类 让你不再纠结JS中的调试代码的兼容
2012/04/20 Javascript
js document.write()使用介绍
2014/02/21 Javascript
jQuery中height()方法用法实例
2014/12/24 Javascript
NodeJS使用jQuery选择器操作DOM
2015/02/13 NodeJs
纯css实现窗户玻璃雨滴逼真效果
2015/08/23 Javascript
一道常被人轻视的web前端常见面试题(JS)
2016/02/15 Javascript
JS实现的自定义水平滚动字体插件完整实例
2016/06/17 Javascript
JavaScript提高网站性能优化的建议(二)
2016/07/24 Javascript
利用JavaScript判断浏览器类型及版本
2016/08/23 Javascript
简单实现JavaScript图片切换效果
2016/11/28 Javascript
Vue实例简单方法介绍
2017/01/20 Javascript
react-router JS 控制路由跳转实例
2017/06/15 Javascript
vue中手机号,邮箱正则验证以及60s发送验证码的实例
2018/03/16 Javascript
layui 表格的属性的显示转换方法
2018/08/14 Javascript
js防抖和节流的深入讲解
2018/12/06 Javascript
微信小程序实现的自定义分享功能示例
2019/02/12 Javascript
JQuery复选框全选效果如何实现
2020/05/08 jQuery
[37:47]IG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python实现360的字符显示界面
2014/02/21 Python
python删除特定文件的方法
2015/07/30 Python
Python统计单词出现的次数
2018/04/04 Python
python实现键盘控制鼠标移动
2020/11/27 Python
Python求两个圆的交点坐标或三个圆的交点坐标方法
2018/11/07 Python
Python实现打砖块小游戏代码实例
2019/05/18 Python
python实现植物大战僵尸游戏实例代码
2019/06/10 Python
日本最大级玩偶手办购物:あみあみ Amiami
2018/04/23 全球购物
Joseph官网:英国小众奢侈品牌
2019/05/17 全球购物
一套C++笔试题面试题
2012/06/06 面试题
详解如何解决使用JSON.stringify时遇到的循环引用问题
2021/03/23 Javascript
班主任工作经验交流材料
2014/05/13 职场文书
男生贾里读书笔记
2015/06/30 职场文书
导游词之太行山青龙峡
2020/01/14 职场文书
Python将CSV文件转化为HTML文件的操作方法
2021/06/30 Python