使用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 捕获窗口关闭事件
Jul 26 Javascript
最新的10款jQuery内容滑块插件分享
Sep 18 Javascript
基于JQuery的类似新浪微博展示信息效果的代码
Jul 23 Javascript
js/jquery获取文本框输入焦点的方法
Mar 04 Javascript
javascript arguments使用示例
Dec 16 Javascript
Angular 4根据组件名称动态创建出组件的方法教程
Nov 01 Javascript
vuejs前后端数据交互之从后端请求数据的实例
Aug 11 Javascript
Vue实现左右菜单联动实现代码
Aug 12 Javascript
在AngularJs中设置请求头信息(headers)的方法及不同方法的比较
Sep 04 Javascript
如何在基于vue-cli的项目自定义打包环境
Nov 10 Javascript
详解js中的几种常用设计模式
Jul 16 Javascript
js实现前端界面导航栏下拉列表
Aug 27 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
WAF的正确bypass
2017/01/05 PHP
PHP获取真实客户端的真实IP
2017/03/07 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
2018/06/13 PHP
jquery写个checkbox——类似邮箱全选功能
2013/03/19 Javascript
js中复制行和删除行的操作实例
2013/06/25 Javascript
String.prototype实现的一些javascript函数介绍
2013/11/22 Javascript
基于Arcgis for javascript实现百度地图ABCD marker的效果
2015/09/12 Javascript
jQuery实现点击表格单元格就可以编辑内容的方法【测试可用】
2016/08/01 Javascript
浅谈jquery设置和获得checkbox选中的问题
2016/08/19 Javascript
浅析如何利用JavaScript进行语音识别
2016/10/27 Javascript
浅析location.href跨窗口调用函数
2016/11/22 Javascript
微信小程序--onShareAppMessage分享参数用处(页面分享)
2017/04/18 Javascript
Angular.JS内置服务$http对数据库的增删改使用教程
2017/05/07 Javascript
基于Vuejs的搜索匹配功能实现方法
2018/03/03 Javascript
JavaScript创建对象方法实例小结
2018/09/03 Javascript
jQuery轻量级表单模型验证插件
2018/10/15 jQuery
vue自定义指令实现仅支持输入数字和浮点型的示例
2019/10/30 Javascript
VSCode搭建React Native环境
2020/05/07 Javascript
Python用zip函数同时遍历多个迭代器示例详解
2016/11/14 Python
Python实现的概率分布运算操作示例
2017/08/14 Python
基于Python数据可视化利器Matplotlib,绘图入门篇,Pyplot详解
2017/10/13 Python
python实现指定文件夹下的指定文件移动到指定位置
2018/09/17 Python
Python压缩模块zipfile实现原理及用法解析
2020/08/14 Python
HTML5 File接口在web页面上使用文件下载
2017/02/27 HTML / CSS
NHL官方在线商店:Shop.NHL.com
2020/05/01 全球购物
女大学生毕业找工作的自我评价
2013/10/03 职场文书
交通安全演讲稿
2014/01/07 职场文书
安全生产检查通报
2014/01/29 职场文书
客服专员岗位职责
2014/02/28 职场文书
经理秘书求职自荐信范文
2014/03/23 职场文书
动物科学专业求职信
2014/07/27 职场文书
2014年群众路线教育实践活动整改措施
2014/09/24 职场文书
村官个人总结范文
2015/03/03 职场文书
项目合作意向书
2015/05/08 职场文书
MySQL注入基础练习
2021/05/30 MySQL
win11无法登录onedrive错误代码0x8004def7怎么办 ?
2022/04/05 数码科技