在我们的产品中,我们在ASP.NET网站上使用了最新的jQuery Mobile开发版本。每次我们进行ASP.NET回发时,浏览器窗口都会显示在屏幕的后面。
示例:
我知道只有解决方法:
我不知道jQuery Mobile在后台做了什么,我假设这是IE9中最终会修复的错误。但是,如果您在此期间有任何关于如何防止它发生的提示,那就太棒了。
编辑:似乎并非每次回发都有。它在每个回发上执行Response.Redirect。我应该补充一点,我所有的回发实际上都是使用ASP.NET AJAX,而不是完整的回发。
答案 0 :(得分:16)
我知道这是一篇旧帖子,但对于来自谷歌的人来说:
我今天遇到了同样的问题。看起来失去焦点行为是IE在窗口对象上触发blur事件时所做的事情。这是导致我这个问题的代码:
$(document.activeElement).blur();
当没有其他元素处于焦点时,activeElement将默认为body元素,然后blur事件会冒泡到窗口。为了解决这个问题,我只做了一个检查:
if (document.activeElement != $('body')[0]) {
$(document.activeElement).blur();
}
答案 1 :(得分:10)
我遇到了与IE10和jQuery 1.7.2类似的问题。 我在代码中找到了这些行:
$(document.activeElement).blur();
和
$(':focus').blur();
因此,添加简单的.not('body')可以解决问题:
$(document.activeElement).not('body').blur();
$(':focus').not('body').blur();
答案 2 :(得分:0)
jQuery Mobile 1.4.2似乎也出现了同样的问题。
使用IE 10时,如果打开一个标签页并在同一台显示器上打开另一个窗口,如果打开一个弹出窗口,它会将浏览器发送到后台。
要解决此问题,您必须编辑_handleDocumentFocusIn函数。您需要更改以下行(10391):
target.blur();
到
if (targetElement.nodeName.toLowerCase() !== "body")
{
target.blur();
}
我提出了拉取请求,希望这将包含在下一个版本中。
答案 3 :(得分:0)
只需将此链接发布给任何正在经历更多这种持续混乱的人。我在Angular位置资源中的window.location =' BLAH'上看到IE 9和IE 10上的问题。
这似乎并没有为我解决问题,但它可能对其他人有所帮助: