使用 document.activeElement
属性。
document.activeElement
属性支持 Chrome 2+、Firefox 3+、IE4+、Opera 9.6+ 和 Safari 4+ 浏览器。
请注意,此属性仅包含可接收按键输入(例如表单元素)的元素。
查看这篇博客文章。它提供了一个解决方案,使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的值,你可以移除失去焦点事件监听器。
document.activeElement
可以使用,不过我不确定浏览器是否支持。在 Firefox 和 IE7 中似乎可以工作,但我想你也需要在 Opera 等其他浏览器中尝试一下。