And*_*res 142 javascript focus
我知道这不应该那么难,但我找不到谷歌的答案.
我想执行一段javascript,它可以清除焦点,无需提前知道焦点所在的元素.它必须适用于Firefox 2以及更现代的浏览器.
有没有办法做到这一点?
jps*_*jps 151
- -编辑 - -
技术上: 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);
Run Code Online (Sandbox Code Playgroud)
Kev*_*eid 86
.focus()
然后.blur()
在你的页面上任意其他东西.由于只有一个元素可以具有焦点,因此将其转移到该元素然后移除.
小智 46
document.activeElement.blur();
Run Code Online (Sandbox Code Playgroud)
在IE9上工作错误 - 如果活动元素是文档正文,它会模糊整个浏览器窗口.最好检查一下这种情况:
if (document.activeElement != document.body) document.activeElement.blur();
Run Code Online (Sandbox Code Playgroud)
对于使用打字稿的任何人,请使用
(document.activeElement as HTMLElement).blur();
Run Code Online (Sandbox Code Playgroud)
这确保元素的类型为HTMLElement
使用TypeScript时,此处提供的答案均不完全正确,因为您可能不知道所选元素的种类。
因此,这将是首选:
if (document.activeElement instanceof HTMLElement)
document.activeElement.blur();
Run Code Online (Sandbox Code Playgroud)
此外,我不鼓励使用公认的答案中提供的解决方案,因为由此产生的模糊不属于正式规格的一部分,并且随时可能破裂。
归档时间: |
|
查看次数: |
138310 次 |
最近记录: |