使用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判断变量是否空值的代码
Oct 26 Javascript
Javascript生成json的函数代码(可以用php的json_decode解码)
Jun 11 Javascript
JS数组去重与取重的示例代码
Jan 24 Javascript
Javascript中3种实现继承的方法和代码实例
Aug 12 Javascript
简介JavaScript中setUTCSeconds()方法的使用
Jun 12 Javascript
JS实现点击按钮获取页面高度的方法
Nov 02 Javascript
jQuery实现页面滚动时智能浮动定位
Jan 08 Javascript
图文详解Javascript中的上下文和作用域
Feb 15 Javascript
微信小程序 页面跳转传值实现代码
Jul 27 Javascript
vue.js select下拉框绑定和取值方法
Mar 03 Javascript
layui 地区三级联动 form select 渲染的实例
Sep 27 Javascript
JavaScript实现指定数量的并发限制的示例代码
Mar 10 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
THINKPHP+JS实现缩放图片式截图的实现
2010/03/07 PHP
Trying to clone an uncloneable object of class Imagic的解决方法
2012/01/11 PHP
分享20款好玩的jQuery游戏
2011/04/17 Javascript
JavaScript中的this关键字介绍与使用实例
2013/06/21 Javascript
js 操作select与option(示例讲解)
2013/12/20 Javascript
JavaScript数值转换的三种方式总结
2014/07/31 Javascript
利用原生JavaScript获取元素样式只是获取而已
2014/10/08 Javascript
js添加事件的通用方法推荐
2016/05/15 Javascript
JavaScript数据结构中串的表示与应用实例
2017/04/12 Javascript
vue仿淘宝订单状态的tab切换效果
2020/06/23 Javascript
详解webpack-dev-server的简单使用
2018/04/02 Javascript
vue滚动插件better-scroll使用详解
2019/10/18 Javascript
js实现消灭星星(web简易版)
2020/03/24 Javascript
Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
2014/10/23 Python
在Python中使用dict和set方法的教程
2015/04/27 Python
Python回调函数用法实例详解
2015/07/02 Python
Python机器学习之SVM支持向量机
2017/12/27 Python
python画出三角形外接圆和内切圆的方法
2018/01/25 Python
python控制windows剪贴板,向剪贴板中写入图片的实例
2018/05/31 Python
Python实现模拟浏览器请求及会话保持操作示例
2018/07/30 Python
python Web开发你要理解的WSGI &amp; uwsgi详解
2018/08/01 Python
Python 获取ftp服务器文件时间的方法
2019/07/02 Python
Python爬取视频(其实是一篇福利)过程解析
2019/08/01 Python
python-sys.stdout作为默认函数参数的实现
2020/02/21 Python
浅谈Python中的模块
2020/06/10 Python
Python列表元素删除和remove()方法详解
2021/01/04 Python
HTML5和CSS3让网页设计提升到下一个高度
2009/08/14 HTML / CSS
HTML5 Canvas 绘图——使用 Canvas 绘制图形图文教程 使用html5 canvas 绘制精美的图
2015/08/31 HTML / CSS
海蓝之谜(LA MER)澳大利亚官方商城:全球高端奢华护肤品牌
2017/10/27 全球购物
巴西体育用品商店:Lojão dos Esportes
2018/07/21 全球购物
Tostadora意大利:定制T恤
2019/04/08 全球购物
总经理办公室主任岗位职责
2013/11/12 职场文书
办加油卡单位介绍信
2014/01/09 职场文书
放飞梦想演讲稿800字
2014/08/26 职场文书
滴水洞导游词
2015/02/10 职场文书
一条慢SQL语句引发的改造之路
2022/03/16 MySQL