由于jQuery Mobile,IE9窗口失去了焦点

Jas*_*ley 12 javascript asp.net internet-explorer-9 jquery-mobile

在我们的产品中,我们在ASP.NET网站中使用了最新的jQuery Mobile开发版本.每次我们进行ASP.NET回发时,浏览器窗口都会显示在屏幕的后面.

例:

  • 最大化任何窗口.示例:Visual Studio,Word,Windows资源管理器.
  • 最大化IE9.IE9是你在屏幕上看到的唯一东西.
  • 单击我们的解决方案中的一个按钮进行回发.
  • IE9不再可见.无论它背后的是什么,现在都有焦点(并填充屏幕,因为它最大化)

我知道只有解决方法:

  • 不要包含jQuery移动脚本.
  • 确保IE9是Windows中唯一的最大化窗口.

我不知道jQuery Mobile在后台做了什么,我假设这是IE9中最终会修复的错误.但是,如果您在此期间有任何关于如何防止它发生的提示,那就太棒了.

编辑:似乎并非每次回发都有.它在每个回发上执行Response.Redirect.我应该补充一点,我所有的回发实际上都是使用ASP.NET AJAX,而不是完整的回发.

Nei*_*man 16

我知道这是一篇旧帖子,但对于来自Google的人来说:

我今天遇到了同样的问题.看起来失去焦点行为是IE在窗口对象上触发blur事件时所做的事情.这是导致我这个问题的代码:

$(document.activeElement).blur();
Run Code Online (Sandbox Code Playgroud)

当没有其他元素处于焦点时,activeElement将默认为body元素,然后blur事件会冒泡到窗口.为了解决这个问题,我只做了一个检查:

if (document.activeElement != $('body')[0]) {
    $(document.activeElement).blur();
}
Run Code Online (Sandbox Code Playgroud)


Dmi*_*nko 10

我有IE10和jQuery 1.7.2的类似问题.我在我的代码中找到了这些行:

$(document.activeElement).blur();
Run Code Online (Sandbox Code Playgroud)

$(':focus').blur();
Run Code Online (Sandbox Code Playgroud)

因此,添加简单的.not('body')可以解决问题:

$(document.activeElement).not('body').blur();
$(':focus').not('body').blur();
Run Code Online (Sandbox Code Playgroud)