使用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中数组的排序、乱序和搜索实现代码
Nov 30 Javascript
js获取URL的参数的方法(getQueryString)示例
Sep 29 Javascript
JQuery验证jsp页面属性是否为空(实例代码)
Nov 08 Javascript
JavaScript实现复制内容到粘贴板代码
Mar 31 Javascript
JavaScript中用let语句声明作用域的用法讲解
May 20 Javascript
深入剖析JavaScript面向对象编程
Jul 12 Javascript
canvas 绘制圆形时钟
Feb 22 Javascript
js时间查询插件使用详解
Apr 07 Javascript
AngularJS 实现点击按钮获取验证码功能实例代码
Jul 13 Javascript
vue组件数据传递、父子组件数据获取,slot,router路由功能示例
Mar 19 Javascript
vue将data恢复到初始状态 &amp;&amp; 重新渲染组件实例
Sep 04 Javascript
详解Vue的sync修饰符
May 15 Vue.js
查找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
php中使用addslashes函数报错问题的解决方法
2013/02/06 PHP
PHP获取本周第一天和最后一天示例代码
2014/02/24 PHP
PHP+MySQL修改记录的方法
2015/01/21 PHP
PHP中$_SERVER使用说明
2015/07/05 PHP
php实现html标签闭合检测与修复方法
2015/07/09 PHP
通过代码实例解析PHP session工作原理
2020/12/11 PHP
jQuery Ajax 实例全解析
2011/04/20 Javascript
JQuery-tableDnD 拖拽的基本使用介绍
2013/07/04 Javascript
js锁屏解屏通过对$.ajax进行封装实现
2014/07/31 Javascript
浅谈javascript中的instanceof和typeof
2015/02/27 Javascript
详谈javascript异步编程
2016/02/21 Javascript
微信小程序 LOL 英雄介绍开发实例
2016/09/30 Javascript
JQueryEasyUI之DataGrid数据显示
2016/11/23 Javascript
JavaScript设计模式之观察者模式(发布订阅模式)原理与实现方法示例
2018/07/27 Javascript
VUE中v-on:click事件中获取当前dom元素的代码
2018/08/22 Javascript
vue踩坑记录之数组定义和赋值问题
2019/03/20 Javascript
js实现简单的贪吃蛇游戏
2020/04/23 Javascript
对numpy中数组转置的求解以及向量内积计算方法
2018/10/31 Python
python 实现一次性在文件中写入多行的方法
2019/01/28 Python
python 基于wx实现音乐播放
2020/11/24 Python
详解利用canvas实现环形进度条的方法
2019/06/12 HTML / CSS
详解html5 canvas 微信海报分享(个人爬坑)
2018/01/12 HTML / CSS
泰国汽车、火车和轮渡票预订网站:Bus Online Ticket
2017/09/09 全球购物
德国珠宝和手表在线商店:VALMANO
2019/03/24 全球购物
大学生职业生涯规划书前言
2014/01/09 职场文书
学习委员自我鉴定
2014/01/13 职场文书
学校介绍信范文
2014/01/14 职场文书
大学生实习感言
2014/01/16 职场文书
有趣的广告词
2014/03/18 职场文书
文明城市标语
2014/06/16 职场文书
大学军训决心书
2015/02/05 职场文书
幼儿园五一劳动节活动总结
2015/02/09 职场文书
党员个人自我评价
2015/03/03 职场文书
关于职业道德的心得体会
2016/01/18 职场文书
python办公自动化之excel的操作
2021/05/23 Python
Android实现图片九宫格
2022/06/28 Java/Android