我有一个小的 Greasemonkey 脚本,它的目的是分散所有的焦点,并将焦点返回到网页的顶层。
代码如下所示:
document.addEventListener('keydown', function(event) {
if (event.ctrlKey && event.keyCode === 32) {
document.activeElement.blur()
}
}, true);
它在我使用的所有网页上都运行良好,WhatsApp Web 除外。它会立即重新聚焦消息输入框。
我在 Firefox 中关闭了自动对焦。
如何确保真正没有留下任何焦点?甚至 WhatsApp 网页消息输入框也不行。
最佳答案
浏览器控制台中是否有任何错误或消息?您使用的是什么版本的浏览器?
无论如何,在不创建 WhatsApp 帐户或发布 MCVE 的情况下,这里一些可能性:
- 该页面使用 JS 重置焦点 -- 由
keydown
触发。 - 页面使用 JS 来重置焦点——由其他东西触发。
- 该页面已重置默认事件元素((过去)在某些浏览器上是可能的)。
- 该页面已覆盖
document.activeElement.blur()
此代码可能有效:
document.addEventListener ('keydown', zEvent => {
if (zEvent.ctrlKey && zEvent.keyCode === 32) {
let actElem = document.activeElement;
if (actElem) actElem.blur ();
else console.error ("document.activeElement is unset");
zEvent.preventDefault ();
zEvent.stopImmediatePropagation ();
}
}, true);
如果没有,并且浏览器控制台中没有相关消息,请从控制台运行:
console.log (document.activeElement.blur.toSource() );
看看是不是原生函数。
您可以尝试的另一件事是查找或创建不同的输入并 .focus()
它。 (document.body.focus()
通常不起作用,唉。)
否则,您将不得不找到重置焦点的 javascript 并阻止它。如何做这样的事情完全取决于页面代码是什么。这是一个不同的问题,但其他 Stack Overflow 问题已经涵盖了各种机制。
关于javascript - Userscript 不会取消对某些页面上文本输入的关注,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55858374/