使用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 offsetX与layerX区别
Mar 12 Javascript
基于jQuery的仿flash的广告轮播
Nov 05 Javascript
深入理解JavaScript系列(9) 根本没有“JSON对象”这回事!
Jan 15 Javascript
构造函数+原型模式构造js自定义对象(最通用)
May 12 Javascript
js代码实现点击按钮出现60秒倒计时
Jan 28 Javascript
jQuery对checkbox 复选框的全选全不选反选的操作
Aug 09 Javascript
jQuery实现弹出窗口弹出div层的实例代码
Jan 09 Javascript
JavaScript数据结构之数组的表示方法示例
Apr 12 Javascript
JavaScript实现图片无缝滚动效果
Jul 07 Javascript
layui 监听表格复选框选中值的方法
Aug 15 Javascript
在layui.use 中自定义 function 的正确方法
Sep 16 Javascript
nuxt.js写项目时增加错误提示页面操作
Nov 05 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
phpMyAdmin 安装教程全攻略
2007/03/19 PHP
php实现中文字符截取防乱码方法汇总
2015/04/29 PHP
JavaScript中的Document文档对象
2008/01/16 Javascript
location.href 在IE6中不跳转的解决方法与推荐使用代码
2010/07/08 Javascript
使用JS 清空File控件的路径值
2013/07/08 Javascript
JS与C#编码解码
2013/12/03 Javascript
iframe如何动态创建及释放其所占内存
2014/09/03 Javascript
Jquery 分页插件之Jquery Pagination
2015/08/25 Javascript
jQuery.deferred对象使用详解
2016/03/18 Javascript
jqueryMobile 动态添加元素,展示刷新视图的实现方法
2016/05/28 Javascript
select隐藏选中值对应的id,显示其它id的简单实现方法
2016/08/25 Javascript
AngularJS监听路由的变化示例代码
2016/09/23 Javascript
Angular2仿照微信UI实现9张图片上传和预览的示例代码
2017/10/19 Javascript
Vue中的验证登录状态的实现方法
2019/03/09 Javascript
node命令行工具之实现项目工程自动初始化的标准流程
2019/08/12 Javascript
JS实现横向轮播图(初级版)
2020/06/24 Javascript
javascript canvas封装动态时钟
2020/09/30 Javascript
web.py在SAE中的Session问题解决方法(使用mysql存储)
2015/06/24 Python
itchat和matplotlib的结合使用爬取微信信息的实例
2017/08/25 Python
Python实现自动发送邮件功能
2021/03/02 Python
Python3导入CSV文件的实例(跟Python2有些许的不同)
2018/06/22 Python
Python进程Multiprocessing模块原理解析
2020/02/28 Python
在Keras中实现保存和加载权重及模型结构
2020/06/15 Python
Python 列表推导式需要注意的地方
2020/10/23 Python
python批量生成身份证号到Excel的两种方法实例
2021/01/14 Python
印尼在线购买隐形眼镜网站:Lensza.co.id
2019/04/27 全球购物
信息管理员岗位职责
2013/12/01 职场文书
学前教育学生自荐信范文
2013/12/31 职场文书
料理师求职信
2014/01/30 职场文书
四风个人对照检查材料思想汇报(办公室通用版)
2014/10/07 职场文书
师德师风事迹材料
2014/12/20 职场文书
婚育证明样本
2015/06/16 职场文书
团拜会主持词
2015/07/04 职场文书
学校运动会简讯
2015/07/20 职场文书
手把手教你实现PyTorch的MNIST数据集
2021/06/28 Python
SpringBoot工程下使用OpenFeign的坑及解决
2021/07/02 Java/Android