你如何清除焦点在JavaScript?
我知道这不应该那么难,但我在Google上找不到答案。
我想要执行一段JavaScript,它将清除所关注的任何元素的焦点,而不必提前知道焦点所在的元素。 它必须工作在Firefox 2以及更现代的浏览器。
有没有一个好的方法来做到这一点?
.focus()
,然后是.blur()
在你的页面上任意的东西。 由于只有一个元素可以获得焦点,所以它被转移到该元素上,然后被移除。
答案是: document.activeElement
– -编辑 – –
技术上来说: document.activeElement.blur()
—-编辑2 —-
function onElementFocused(e) { if (e && e.target) document.activeElement = e.target == document ? null : e.target; } if (document.addEventListener) document.addEventListener("focus", onElementFocused, true);
document.activeElement.blur();
在IE9上工作不正确 – 如果活动元素是文档主体,则模糊整个浏览器窗口。 最好检查这种情况:
if (document.activeElement != document.body) document.activeElement.blur();
dummyElem.focus()其中dummyElem是一个隐藏的对象(例如负zIndex)?
你可以调用window.focus();
但移动或失去焦点必然会干扰任何使用Tab键来绕过页面的人。
你可以听到键码13,并放弃如果按Tab键的效果。
这个问题可能会给你一些答案。