使用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的location.href跳出框架打开新页面的方法
Sep 04 Javascript
JavaScript中实现最高效的数组乱序方法
Oct 11 Javascript
你不知道的高性能JAVASCRIPT
Jan 18 Javascript
详解javascript传统方法实现异步校验
Jan 22 Javascript
JavaScript的Vue.js库入门学习教程
May 23 Javascript
通过正则表达式获取url中参数的简单实现
Jun 07 Javascript
微信小程序使用checkbox显示多项选择框功能【附源码下载】
Dec 11 Javascript
vue2 mint-ui loadmore实现下拉刷新,上拉更多功能
Mar 21 Javascript
jQuery实现的页面详情展开收起功能示例
Jun 11 jQuery
手把手教你 CKEDITOR 4 实现Dialog 内嵌 IFrame操作详解
Jun 18 Javascript
vue使用混入定义全局变量、函数、筛选器的实例代码
Jul 29 Javascript
vue使用recorder.js实现录音功能
Nov 22 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
Win9x/ME下Apache+PHP安装配置
2006/10/09 PHP
PHP如何实现Unicode和Utf-8编码相互转换
2015/07/29 PHP
jQuery开发者都需要知道的5个小技巧
2010/01/08 Javascript
JavaScript中使用正则匹配多条,且获取每条中的分组数据
2010/11/30 Javascript
ModelDialog JavaScript模态对话框类代码
2011/04/17 Javascript
在javascript中如何得到中英文混合字符串的长度
2014/01/17 Javascript
JS创建类和对象的两种不同方式
2014/08/08 Javascript
JavaScript截取字符串的2个函数介绍
2014/08/27 Javascript
基于JavaScript实现下拉列表左右移动代码
2017/02/07 Javascript
JS去掉字符串前后空格、阻止表单提交的实现代码
2017/06/08 Javascript
JS仿淘宝搜索框用户输入事件的实现
2017/06/19 Javascript
VUE页面中加载外部HTML的示例代码
2017/09/20 Javascript
JS函数内部属性之arguments和this实例解析
2018/10/07 Javascript
jquery获取img的src值实例介绍
2019/01/16 jQuery
JS实现马赛克图片效果完整示例
2019/04/13 Javascript
vue中的计算属性和侦听属性
2020/11/06 Javascript
python爬虫教程之爬取百度贴吧并下载的示例
2014/03/07 Python
Python使用xlrd读取Excel格式文件的方法
2015/03/10 Python
python通过BF算法实现关键词匹配的方法
2015/03/13 Python
详解使用Python处理文件目录的相关方法
2015/10/16 Python
Python使用redis pool的一种单例实现方式
2016/04/16 Python
python实现生命游戏的示例代码(Game of Life)
2018/01/24 Python
python根据list重命名文件夹里的所有文件实例
2018/10/25 Python
Python3实现mysql连接和数据框的形成(实例代码)
2020/01/17 Python
python使用ctypes调用扩展模块的实例方法
2020/01/28 Python
解决python DataFrame 打印结果不换行问题
2020/04/09 Python
俄罗斯连接商品和买家的在线平台:goods.ru
2020/11/30 全球购物
英语教学随笔感言
2014/02/20 职场文书
爱国口号
2014/06/19 职场文书
2014年党员整改措施范文
2014/09/21 职场文书
无财产离婚协议书范本
2014/10/28 职场文书
幼儿园教师教育随笔
2015/08/14 职场文书
2021年pycharm的最新安装教程及基本使用图文详解
2021/04/03 Python
Django 实现jwt认证的示例
2021/04/30 Python
将图片保存到mysql数据库并展示在前端页面的实现代码
2021/05/02 MySQL
python实现过滤敏感词
2021/05/08 Python