Javascript 当我的页面加载到IE中时,该窗口立即跳到其他窗口的后面

Javascript 当我的页面加载到IE中时,该窗口立即跳到其他窗口的后面,javascript,windows,internet-explorer,Javascript,Windows,Internet Explorer,一位用户最近报告了这个神秘的bug:On: 当它加载到IE中时(在IE8中观察到,它在其他版本中的状态未知);及 IE后面至少还有一扇窗户打开 发生以下情况: IE窗口移动到所有其他窗口的后面;及 它保持着它的焦点。这意味着按下窗口的任务栏按钮,页面接收所有预期的按键事件,即使窗口完全隐藏 试图将IE推向前台是徒劳的。只要后面还有一扇窗户可以隐藏,它就会立即跳回来 我绝对不是IE专家。我保留了一台XP虚拟机,以备在极少数必须使用IE或Windows的情况下使用。所以我甚至不知道如何开始追

一位用户最近报告了这个神秘的bug:On:

  • 当它加载到IE中时(在IE8中观察到,它在其他版本中的状态未知);及
  • IE后面至少还有一扇窗户打开
发生以下情况:

  • IE窗口移动到所有其他窗口的后面;及
  • 它保持着它的焦点。这意味着按下窗口的任务栏按钮,页面接收所有预期的按键事件,即使窗口完全隐藏
  • 试图将IE推向前台是徒劳的。只要后面还有一扇窗户可以隐藏,它就会立即跳回来

我绝对不是IE专家。我保留了一台XP虚拟机,以备在极少数必须使用IE或Windows的情况下使用。所以我甚至不知道如何开始追踪这个bug。有人能帮我找出这个错误吗?

我过去也遇到过同样的问题-身体模糊[document.body.blur()只在IE中有效]。执行此操作的函数是源代码中的setBlur()

当前版本:

function setBlur(items) {
    var item;
    for (var i = 0; i < items.length; i++) {
        item = items[i];
        if (item.id == "search-box-wrapper") continue;
        if (item.children) setBlur(item.children);
        try {
            item.onfocus = function() {
                this.blur();
            };
        } catch (e) {
            if (console) console.warn(e);
        }
    }
}
功能设置(项目){
var项目;
对于(变量i=0;i
不包括身体模糊的版本(希望解决您的问题):

功能设置(项目){
var项目;
对于(变量i=0;i

这确保了函数setBlur()不会被意外地用于模糊主体,尽管它没有处理调用setBlur([document.body,…])的函数。

我打赌它与IE8和IE9调用的“setBlur()”函数有关。试着让它停止做任何事。@Pointy:谢谢。IE8似乎不喜欢这个功能。你(或其他任何人)知道IE9中是否也会出现这个错误吗?我没有Vista或更新的机器,因此无法安装IE9。作为后续,IE9在这方面与IE8相同。我后来注意到我从未接受过答案。我应用了另一种方法来避免身体模糊,现在虫子已经死了。
function setBlur(items) {
    var item;
    for (var i = 0; i < items.length; i++) {
        item = items[i];
        if (item.id == "search-box-wrapper" || (item.tagName).toUpperCase() == "BODY") continue;
        if (item.children) setBlur(item.children);
        try {
            item.onfocus = function() {
                this.blur();
            };
        } catch (e) {
            if (console) console.warn(e);
        }
    }
}