当用户在桌面上切换标签时,我正试图从(jQuery Mobile)文本输入中删除焦点。虽然我可以在下面的控制台中正确识别activeElement,但我无法编辑其任何属性或删除它的焦点。
这就是我正在做的事情:
// 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()
可以在控制台上正常工作,但不能从我的听众那里工作。
答案 0 :(得分:9)
确定。这有效:
window.onblur = function () {
document.activeElement.blur();
};
所以看起来模糊效果很好,因为如果我在之前控制activeElemnt
并在<{strong>之后之后,它会从一个INPUT切换到blur()
到BODY标签。正确地说,我的身体将它的类设置为FOOBAR
。对我来说问题是文本元素仍然保留焦点,但我认为这是由于jQuery Mobile中的一些处理程序。
上述解决方案相反。当用户切换标签时,我会删除activeElement
的焦点。的工作原理。