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

时间:2011-06-30 15:16:02

标签: javascript windows internet-explorer

用户最近报告了这个神秘的错误:在one of my pages

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

发生以下情况:

  • IE窗口移动到所有其他窗口后面;和
  • 它始终关注。这意味着按下窗口的任务栏按钮,页面将收到所有预期的键事件,即使窗口完全隐藏也是如此。
  • 试图将IE带到前台是徒劳的。只要有另一个窗口隐藏在后面,它就会立即再次跳回来。

我绝不是IE专家。在必须使用IE或Windows的情况下,我会保留一台XP虚拟机。所以我不熟悉如何开始追踪这个bug。有人可以帮我解决这个错误吗?

1 个答案:

答案 0 :(得分:3)

我过去遇到过同样的问题 - 身体模糊[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,...,...])的函数。