如何在javascript中清除焦点?

如何在javascript中清除焦点?,javascript,focus,Javascript,Focus,我知道这并不难,但我在谷歌上找不到答案 我想执行一段javascript,它将清除焦点所在的任何元素,而不提前知道焦点所在的元素。它必须在Firefox2和更现代的浏览器上工作 有什么好办法吗?回答: 要执行所需操作,请使用document.activeElement.blur() 如果您需要支持Firefox 2,您还可以使用: function onElementFocused(e) { if (e && e.target) document.acti

我知道这并不难,但我在谷歌上找不到答案

我想执行一段javascript,它将清除焦点所在的任何元素,而不提前知道焦点所在的元素。它必须在Firefox2和更现代的浏览器上工作

有什么好办法吗?

回答:

要执行所需操作,请使用
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()
,然后在页面上添加其他任意内容。因为只有一个元素可以有焦点,所以它被转移到该元素,然后被移除。

dummeyelem.focus()其中dummeyelem是一个隐藏对象(例如,具有负zIndex)?

您可以调用window.focus()

但是移动或丢失焦点肯定会干扰任何使用tab键浏览页面的人

您可以收听keycode 13,如果按下tab键,则放弃该效果

document.activeElement.blur();
在IE9上工作错误-如果活动元素是文档体,则会模糊整个浏览器窗口。最好检查这种情况:

if (document.activeElement != document.body) document.activeElement.blur();

使用jQuery时,它只是:
$(this.blur()

使用TypeScript时,此处提供的答案都不完全正确,因为您可能不知道所选元素的类型

因此,最好是:

if (document.activeElement instanceof HTMLElement)
    document.activeElement.blur();

此外,我不鼓励使用公认答案中提供的解决方案,因为由此产生的模糊不是官方规范的一部分,并且可能随时中断。

清晰焦点是什么意思?-它和模糊一样吗?我想让浏览器中的任何元素都没有焦点。有没有办法让一个看不见的元素有焦点?我不是最好的方法的专家;但您当然可以将其定位在屏幕外或
溢出:clip
样式化元素的边界之外。但是您可以只使用页面上已经存在的字段。或者只是为了这个目的创建一个,然后再次删除它。我认为将焦点设置为屏幕外的某个元素将强制滚动到该元素。但是,可以为此目的创建一个不可见元素。尽管如此,一些浏览器可能很难删除插入符号。只使用blur()可能会更好。您仍然可以使用keyup(keydown)事件处理程序获取密钥。此答案已过时,在2017年不适用。改为使用activeElement,因为它仍然可以工作,只是时间更长,焦点也会移动(这可能会干扰选项卡导航),而且“其他任意的东西”应该是什么也不是很明显。如果浏览器份额为0.66%的Firefox 2是一个破局者。。。我有一个修正,这是在我编辑过的答案中。2013年,Firefox2的浏览器份额大大低于0.66%,而简单的
document.activeElement.blur()
是实现这一效果的最佳方法。我得到以下信息:
属性“blur”在类型“Element”.ts(2339)上不存在
@YTG查看我发布的关于这个问题的答案,它解决了这个问题。这是一个旧答案,所以你现在可能知道了,但是这个答案不适用有两个原因。1.它假设OP使用的是jquery,2
需要是焦点元素,而问题明确说明OP事先不知道焦点元素。我得到
属性“blur”在类型“element”上不存在。ts(2339)