使用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代码要注意的几条规则
Sep 10 Javascript
jQuery循环滚动展示代码 可应用到文字和图片上
May 11 Javascript
js分解url参数(面向对象-极简主义法应用)
Aug 09 Javascript
JavaScript高级程序设计 阅读笔记(十四) js继承机制的实现
Aug 14 Javascript
jQuery实现彩带延伸效果的网页加载条loading动画
Oct 29 Javascript
原生js轮播特效
May 18 Javascript
Vue使用vue-cli创建项目
Sep 01 Javascript
利用yarn代替npm管理前端项目模块依赖的方法详解
Sep 04 Javascript
angular2/ionic2 实现搜索结果中的搜索关键字高亮的示例
Aug 17 Javascript
CKeditor富文本编辑器使用技巧之添加自定义插件的方法
Jun 14 Javascript
vue 实现setInterval 创建和销毁实例
Jul 21 Javascript
详解CocosCreator消息分发机制
Apr 16 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
PHP内核探索之变量
2015/12/22 PHP
PHP下载远程图片的几种方法总结
2017/04/07 PHP
JS window对象的top、parent、opener含义介绍
2013/12/03 Javascript
js和jquery使按钮失效为不可用状态的方法
2014/01/26 Javascript
JQuery的Ajax请求实现局部刷新的简单实例
2014/02/11 Javascript
jQuery过滤选择器:not()方法使用介绍
2014/04/20 Javascript
AngularJS中的DOM操作用法分析
2016/11/04 Javascript
jQuery移除或禁用html元素点击事件常用方法小结
2017/02/10 Javascript
zTree树形菜单交互选项卡效果的实现方法
2017/12/25 Javascript
浅谈vue中关于checkbox数据绑定v-model指令的个人理解
2018/11/14 Javascript
简单了解Javscript中兄弟ifream的方法调用
2019/06/17 Javascript
为什么Vue3.0使用Proxy实现数据监听(defineProperty表示不背这个锅)
2019/10/14 Javascript
webpack4 配置 ssr 环境遇到“document is not defined”
2019/10/24 Javascript
js实现数字从零慢慢增加到指定数字示例
2019/11/07 Javascript
vue与django集成打包的实现方法
2019/11/11 Javascript
Vue3项目打包后部署到服务器 请求不到后台接口解决方法
2020/02/06 Javascript
解决vue项目 build之后资源文件找不到的问题
2020/09/12 Javascript
简单介绍Python的Django框架加载模版的方式
2015/07/20 Python
python+mysql实现教务管理系统
2019/02/20 Python
分享8个非常流行的 Python 可视化工具包
2019/06/05 Python
python函数局部变量、全局变量、递归知识点总结
2019/11/15 Python
django中media媒体路径设置的步骤
2019/11/15 Python
python 读取更新中的log 或其它文本方式
2019/12/24 Python
基于PyInstaller各参数的含义说明
2021/03/04 Python
美国存储和组织商店:The Container Store
2017/08/16 全球购物
Cole Haan官方网站:美国时尚潮流品牌
2017/12/06 全球购物
PacSun官网:加州生活方式服装、鞋子和配饰
2018/03/10 全球购物
英国领先的露营和露营车品牌之一:OLPRO
2019/08/06 全球购物
办公室前台岗位职责范本
2013/12/10 职场文书
军训生自我鉴定范文
2013/12/27 职场文书
财务负责人任命书
2014/06/06 职场文书
应届毕业生求职信范文
2014/07/07 职场文书
入股合作协议书
2014/10/12 职场文书
迁户口计划生育证明
2014/10/19 职场文书
2016大一新生军训心得体会
2016/01/11 职场文书
2022漫威和DC电影上映作品
2022/04/05 欧美动漫