我知道这不应该那么难,但我在谷歌上找不到答案。
我想执行一段 javascript,它将清除它所在的任何元素的焦点,而无需提前知道焦点在哪个元素上。它必须适用于 Firefox 2 以及更现代的浏览器。
有没有好的方法可以做到这一点?
我知道这不应该那么难,但我在谷歌上找不到答案。
我想执行一段 javascript,它将清除它所在的任何元素的焦点,而无需提前知道焦点在哪个元素上。它必须适用于 Firefox 2 以及更现代的浏览器。
有没有好的方法可以做到这一点?
要做你想做的事,请使用 document.activeElement.blur()
如果你需要支持 Firefox 2,你也可以使用这个:
function onElementFocused(e)
{
if (e && e.target)
document.activeElement = e.target == document ? null : e.target;
}
if (document.addEventListener)
document.addEventListener("focus", onElementFocused, true);
.focus()
然后.blur()
在您的页面上任意添加其他内容。由于只有一个元素可以拥有焦点,因此它会被转移到该元素然后被移除。
document.activeElement.blur();
在 IE9 上工作出错 - 如果活动元素是文档正文,它会模糊整个浏览器窗口。最好检查一下这种情况:
if (document.activeElement != document.body) document.activeElement.blur();
使用 TypeScript 时,此处提供的答案都不是完全正确的,因为您可能不知道所选元素的类型。
因此,这将是首选:
if (document.activeElement instanceof HTMLElement)
document.activeElement.blur();
此外,我不鼓励使用已接受答案中提供的解决方案,因为由此产生的模糊不是官方规范的一部分,并且可能随时中断。
dummyElem.focus() 其中 dummyElem 是隐藏对象(例如,zIndex 为负)?