Javascript IE9窗口因jQuery Mobile而失去焦点
在我们的产品中,我们正在ASP.NET网站上使用最新的jQuery Mobile开发版本。每次我们执行ASP.NET回发时,浏览器窗口都会转到屏幕的后面 例如:Javascript IE9窗口因jQuery Mobile而失去焦点,javascript,asp.net,jquery-mobile,internet-explorer-9,Javascript,Asp.net,Jquery Mobile,Internet Explorer 9,在我们的产品中,我们正在ASP.NET网站上使用最新的jQuery Mobile开发版本。每次我们执行ASP.NET回发时,浏览器窗口都会转到屏幕的后面 例如: 最大化任何窗口。示例:可视 Studio、Word、Windows资源管理器 最大化IE9。IE9是唯一的 你在屏幕上看到的东西 在我们的解决方案中单击一个按钮 回帖 IE9不再可见。 它背后的一切现在都成了焦点 (并按原样填充屏幕 最大化) 我知道的唯一解决办法是: 不要包含jQuery移动脚本 确保IE9是Windows中唯一
- 最大化任何窗口。示例:可视 Studio、Word、Windows资源管理器李>
- 最大化IE9。IE9是唯一的 你在屏幕上看到的东西李>
- 在我们的解决方案中单击一个按钮 回帖李>
- IE9不再可见。 它背后的一切现在都成了焦点 (并按原样填充屏幕 最大化)
- 不要包含jQuery移动脚本李>
- 确保IE9是Windows中唯一最大化的窗口
编辑:似乎不是每次回发都有。每次回发都会执行Response.Redirect。我应该补充一点,我所有的回发实际上都是利用ASP.NET AJAX,而不是完整的回发 我知道这是一篇老文章,但对于来自谷歌的人来说: 我今天遇到了同样的问题。IE在触发窗口对象上的模糊事件时,似乎就是这种失焦行为。这就是导致我出现此问题的代码:
$(document.activeElement).blur();
当焦点中没有其他元素时,activeElement将默认为body元素,然后模糊事件将出现在窗口中。为了解决这个问题,我只做了如下检查:
if (document.activeElement != $('body')[0]) {
$(document.activeElement).blur();
}
我在IE10和jQuery1.7.2上也有类似的问题。 我在我的代码中找到以下行:
$(document.activeElement).blur();
及
因此,添加simple.not('body')可以解决问题:
$(document.activeElement).not('body').blur();
$(':focus').not('body').blur();
jquerymobile1.4.2似乎也存在同样的问题 当使用IE 10时,在同一显示器上打开一个选项卡和另一个窗口,如果打开一个弹出窗口,它会将浏览器发送到后台 要解决此问题,必须编辑_handleDocumentFocusIn函数。您需要更改以下行(10391):
target.blur()代码>
到
我提出了一个请求,希望下一个版本中会包含此链接。只要将此链接发布给任何正在经历这种持续混乱的人即可。我在window.location='BLAH'上看到了IE9和IE10的问题,从角度定位资源中
这似乎不能解决我的问题,但可能会帮助其他人:
PS:我很惊讶javascript会以这种方式影响操作系统窗口。您是否将处于调试模式的应用程序连接到VS?否。甚至在外部服务器上也可以。我可以复制这个,但只有当IE9中只有一个选项卡打开时。如果你打开另一个标签,一个随机的站点,这个错误将不会发生。这是有道理的,但我没有时间来测试它,因为我们找到了另一个解决方法(Chrome框架,呵呵):)写得好的答案和优雅的解决方案,对我有效,非常感谢!
$(document.activeElement).not('body').blur();
$(':focus').not('body').blur();
if (targetElement.nodeName.toLowerCase() !== "body")
{
target.blur();
}