【发布时间】:2010-10-03 18:44:47
【问题描述】:
【问题讨论】:
-
stackoverflow.com/questions/2683742/… 似乎是一个相关的问题。
标签: javascript html
【问题讨论】:
标签: javascript html
使用document.activeElement 属性。
Chrome 2+、Firefox 3+、IE4+、Opera 9.6+ 和 Safari 4+ 支持 document.activeElement 属性。
请注意,此属性将仅包含接受击键的元素(例如表单元素)。
【讨论】:
查看this blog post。它提供了一种解决方法,使document.activeElement 可以在所有浏览器中运行。
function _dom_trackActiveElement(evt) {
if (evt && evt.target) {
document.activeElement = evt.target == document ? null : evt.target;
}
}
function _dom_trackActiveElementLost(evt) {
document.activeElement = null;
}
if (!document.activeElement) {
document.addEventListener("focus",_dom_trackActiveElement,true);
document.addEventListener("blur",_dom_trackActiveElementLost,true);
}
注意事项:
这个实现有点过于悲观了;如果浏览器窗口失去焦点,则 activeElement 设置为 null(因为输入控件也失去焦点)。如果您的应用程序需要 activeElement 值,即使浏览器窗口没有焦点,您可以移除 blur 事件侦听器。
【讨论】:
只是为了记录,有点晚了,当然not supported in old browsers:
var element = document.querySelector(":focus");
应该适用于所有元素(例如锚点)。
【讨论】:
也许document.activeElement,不知道浏览器是否支持。似乎可以在 Firefox 和 IE7 中使用,但我想您也必须在 Opera 等中尝试。
【讨论】:
检查bottom post。我认为这会奏效......
【讨论】: