我想尝试这个例子,但它不起作用.为什么?
<div id="test"></div>
<script>
$('#test').focus();
alert($("*:focus").attr("id"))
</script>
Run Code Online (Sandbox Code Playgroud)
请注意,正如其他人所提到的,默认情况下并非所有元素都可以聚焦.您必须将tabindex属性添加到它们以使这些元素可聚焦:
<div id="test" tabindex="0"></div>
<script>
$('#test').focus();
alert($("*:focus").attr("id"))
</script>
Run Code Online (Sandbox Code Playgroud)
tabindex应用该属性后,您的原始代码将起作用.见这个工作示例.
在纯JavaScript中,document.activeElement应该返回focussed元素,如果有的话.它还可以返回一个活动的元素,但不会聚焦.处理它的最好方法是检查元素是否被聚焦:
function getFocussedElement() {
var el;
if ((el = document.activeElement) && el != document.body)
return el;
else
return null;
}
Run Code Online (Sandbox Code Playgroud)
值得一提的是,这种方法应该是多快比选择查询.请注意,这activeElement不是任何标准的一部分,但所有主流浏览器都支持它.