使用JS取得焦点(focus)元素代码
2014-03-22 00:00
651 查看
对于良好的用户体验来说,网站/web app的可访问性和可用性,以及功能 都是至关重要的。
当我们的网站运行良好/体验很好的时候,用户是意识不到的,但我们做得不好时他们肯定会感觉到。 应用程序的可用性和可访问性的一个重要组成部分是输入焦点(focus)的处理,但这又是开发人员常常会忽视的一点。
对输入焦点处理很差的一个例子: 在点击一个链接以后打开一个窗口,但却不将光标聚焦到窗口中的任何元素内。 甚至更糟的是: 聚焦到模态窗口中的某个元素,但在关闭以后焦点照样不返回。 理想情况下,在触发链接时会保存一个引用,然后将光标聚焦到新窗口,并在窗口关闭时把光标重新移回去。
但假如你不知道输入光标现在在哪个元素上怎么办? 通过 document.activeElement 属性我们可以取得当前文档中获得焦点的元素!
The JavaScript
使用 document.activeElement 来查找当前选中的元素是很容易的事:
这个属性不仅在常规输入元素上可用,包括表单字段或 <a> 标签链接,而且只要设置了 tabIndex 属性的任意元素都是可用的。
我喜欢 document.activeElement 的原因是,不需要使用事件监听或委托监听器来追踪记录下那个元素获得了焦点 ―― 您可以随时获取这个属性。 当然在使用这样的特性之前你应该做大量的测试―― 是否在跨浏览器或竞态条件下出什么BUG。 总而言之,我对它很满意,觉得它非常可靠!
当我们的网站运行良好/体验很好的时候,用户是意识不到的,但我们做得不好时他们肯定会感觉到。 应用程序的可用性和可访问性的一个重要组成部分是输入焦点(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。 总而言之,我对它很满意,觉得它非常可靠!
相关文章推荐
- 使用JS取得焦点(focus)元素代码
- 使用JS取得焦点(focus)元素
- 使用JS取得焦点(focus)元素
- 使用JS取得焦点(focus)元素
- js之checkbox的代码全选/全不选,使用id获取元素,而不是name
- js之checkbox的代码全选/全不选,使用id获取元素,而不是name
- 如何使用Javascript(简称JS)取得LI里的内容(简单易懂的代码实例)
- ASP.NET#使用母版时,如果要使用js中的getElementById()方法取得某个内容页的元素时要注意的问题
- 在js中使用createElement创建HTML对象和元素 (转)
- 如何使用C#在发送往client的内容上加js代码(转)
- js脚本代码日常使用大全
- js使用html2canvas实现屏幕截取的示例代码
- JS实现不使用图片仿Windows右键菜单效果代码
- 使用js控制iframe中的各元素
- 使用Sublime Text 3的HTML-CSS-JS Prettify插件格式化代码
- JS 使用for循环遍历子节点查找元素
- js 使用js的CreateElement方法创建元素、样式表动态引入
- 基于Node.js的文件服务器(使用Q重构代码)
- 使用jquery/js获取iframe父子级、同级获取元素
- 使用JS或jQuery模拟鼠标点击a标签事件代码