Javascript 如何在更改选项卡(onfocus/onblur)时从activeElement中移除焦点?
当用户在桌面上切换选项卡时,我试图从(jQuery Mobile)文本输入中删除焦点。虽然我可以在下面的控制台中正确识别activeElement,但我无法编辑它的任何属性或删除它的焦点 这就是我正在做的:Javascript 如何在更改选项卡(onfocus/onblur)时从activeElement中移除焦点?,javascript,jquery,tabs,focus,onblur,Javascript,Jquery,Tabs,Focus,Onblur,当用户在桌面上切换选项卡时,我试图从(jQuery Mobile)文本输入中删除焦点。虽然我可以在下面的控制台中正确识别activeElement,但我无法编辑它的任何属性或删除它的焦点 这就是我正在做的: // inside some init method window.onfocus = function () { // triggers console.log(document.activeElement); if (document.activeEleme
// inside some init method
window.onfocus = function () {
// triggers
console.log(document.activeElement);
if (document.activeElement.tagName !== "BODY") {
console.log("clear focus");
document.activeElement.blur();
document.activeElement.className = "FOOBAR";
}
};
当我在一个窗体上并聚焦于一个文本输入,然后切换到另一个选项卡并返回到该窗体的选项卡时,事件侦听器将触发,并且我仍然处于活动状态的输入被正确记录。不过就是这样。。。我不能模糊或编辑任何元素属性
问题:如何在
window.onfocus
或window.onblur
上正确移除活动元素的焦点
谢谢
PS:它也不适用于jQuery:
$(window).on("focus", function () {
$(document.activeElement).blur();
});
我正在寻找一个只有JavaScript的解决方案
编辑:document.activeElement.blur()
在控制台上可以正常工作,但在我的侦听器上不行。好。这项工作:
window.onblur = function () {
document.activeElement.blur();
};
因此,模糊似乎工作正常,因为如果我在调用blur()
之前和之后对activeElemnt
进行控制台操作,它将从输入切换到BODY标记。正确地说,我的身体将其类设置为FOOBAR
。对我来说,问题是文本元素仍然保持焦点,但我认为这是由于jquerymobile中的一些处理程序造成的
上述解决方案的效果正好相反。当用户切换选项卡时,我会移除
activeElement
的焦点。有效。您是否尝试将焦点更改为其他元素,例如文档?是的。我刚刚解决了。等一下,我在发帖。