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

When my page loads in IE, the window immediately jumps behind other windows

本文关键字:窗口 其他 我的 加载 IE 中时      更新时间:2023-09-26

一位用户最近报告了这个令人困惑的错误:在我的一个页面上:

  • 当它在IE中加载时(在IE8中观察到,它在其他版本中的状态未知(;以及
  • IE后面至少有一个其他窗口打开

发生以下情况:

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

我决不是IE专家。当我必须使用IE或Windows时,我会随身携带XP虚拟机。所以我甚至不知道如何开始追踪这个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);
        }
    }
}

排除身体模糊的版本(希望能解决您的问题(:

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);
        }
    }
}

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