使div元素获得焦点

77

如何让HTML的<div>元素获得焦点,这样当调用focus()时,元素就会被放入焦点中?


7
你的意思是让div元素能够获得焦点吗?HTML中使用 tabindex="0",JavaScript中使用 elRef.tabIndex = 0; - Fabrício Matté
请阅读 https://gist.github.com/jamiewilson/c3043f8c818b6b0ccffd,不是每个HTML元素默认都可以聚焦。 - Alan Dong
在将tabIndex设置为0的div上添加后,通过getElementsByClassName或getElementById访问该div元素,然后调用focus()方法。 - undefined
1个回答

136

tabindex="0"设置在div上,这是基于您希望div接收焦点而不是子元素的假设。

更新了答案以添加一个JS Fiddle演示,展示了使用JavaScript实现此目的的方法:

var divs = document.getElementsByTagName('div');
for (var i = 0, len = divs.length; i < len; i++){
    divs[i].setAttribute('tabindex', '0');
}

JS Fiddle演示

在编写此演示时,我发现tabindex="-1"允许元素接收鼠标点击以分配焦点,但不允许通过tab按钮进行键盘事件(正如先前Fabricio Matté的评论所暗示的那样,tabindex="0"可以允许两者)。因此,在演示中我使用了它,并更新了原来的答案以反映这个变化。

tabindex="0"tabindex="-1"的行为在此文档中有说明:https://developer.mozilla.org/en-US/docs/Web/Accessibility/Keyboard-navigable_JavaScript_widgets#Using_tabindex


tabindex="-1" also allows you to focus the element with javascript by using element.focus() - Seega

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接