更改选项卡时如何从activeElement中删除焦点(onfocus/onblur)?

fre*_*ent 8 javascript jquery tabs focus onblur

当用户在桌面上切换标签时,我正试图从(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";
  }
};
Run Code Online (Sandbox Code Playgroud)

当我在一个表单上并聚焦文本输入时,然后切换到另一个选项卡并返回到带有表单的选项卡,事件侦听器触发并且我的仍然活动的输入被正确记录.然而就是这样......我无法模糊或编辑任何元素属性.

问题:
如何正确地从活动元素中移除焦点window.onfocuswindow.onblur

谢谢!

PS:它也不适用于jQuery:

$(window).on("focus", function () {
  $(document.activeElement).blur();
});
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个只有JavaScript的解决方案.

编辑:
document.activeElement.blur()从控制台工作正常,但不是从我的听众.

fre*_*ent 10

好.这有效:

    window.onblur = function () {
      document.activeElement.blur();
    };
Run Code Online (Sandbox Code Playgroud)

所以看起来模糊效果很好,因为如果我activeElemnt 调用它之前之后控制blur()它从INPUT切换到BODY标签.正确地说,我的身体已被设定为FOOBAR.对我来说问题是文本元素仍然保留焦点,但我认为这是由于jQuery Mobile中的一些处理程序.

上述解决方案相反.我删除activeElement了用户切换标签时的焦点.作品.