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

时间:2014-01-09 10:11:36

标签: 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";
  }
};

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

问题
如何在window.onfocuswindow.onblur上正确删除活动元素中的焦点?

谢谢!

PS:它也不适用于jQuery:

$(window).on("focus", function () {
  $(document.activeElement).blur();
});

我正在寻找仅限JavaScript的解决方案。

修改
document.activeElement.blur()可以在控制台上正常工作,但不能从我的听众那里工作。

1 个答案:

答案 0 :(得分:9)

确定。这有效:

    window.onblur = function () {
      document.activeElement.blur();
    };

所以看起来模糊效果很好,因为如果我在之前控制activeElemnt 并在<{strong>之后之后,它会从一个INPUT切换到blur()到BODY标签。正确地说,我的身体将它的类设置为FOOBAR。对我来说问题是文本元素仍然保留焦点,但我认为这是由于jQuery Mobile中的一些处理程序。

上述解决方案相反。当用户切换标签时,我会删除activeElement的焦点。的工作原理。