您如何清除JavaScript的重点?

2020/10/25 11:41 · javascript ·  · 0评论

我知道这应该没那么难,但是我在Google上找不到答案。

我想执行一段JavaScript,将焦点从任何元素上清除,而无需提前知道焦点在哪个元素上。它必须在firefox 2以及更现代的浏览器上工作。

有什么好方法吗?

回答: document.activeElement

做你想做的事,用 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)?

您可以调用window.focus();

但移动或失去焦点势必会干扰使用Tab键浏览页面的任何人。

您可以收听键码13,如果按下Tab键,则放弃效果。

使用jQuery,它的公正性是: $(this).blur();

本文地址:http://javascript.askforanswer.com/ninruheqingchujavascriptdezhongdian.html
文章标签: ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!