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