我在IE8中运行的企业Web应用程序上工作。看起来正在身体上调用blur()
,导致IE窗口被发送到后台。不幸的是,此代码位于由供应商控制的应用程序的一部分中。
在没有修改实际调用blur()
的代码的情况下,有没有办法阻止body.blur()
被身体调用?
由于这是一个企业应用程序,因此可以接受应用程序本身更改之外的解决方案;比如改变IE8设置,注册表等等。
答案 0 :(得分:2)
您应该能够将blur
硬编码为虚拟方法。如果你可以在调用之前进入,只需调用body.blur = function() {};
(假设body
指向你的DOM主体元素)。
答案 1 :(得分:1)
使用jQuery你可以简单地阻止事件:
$('body').blur(function(e) { e.preventDefault(); });
答案 2 :(得分:0)
如果使用Firefox 是一个选项,我有两个答案,我建议使用Greasemonkey替换该功能。
如果您必须使用IE,您可能需要更改页面本身 (我知道有一些Trixie和IE7pro用于IE,但从未使用过。)
答案 3 :(得分:0)
使用javaScript编辑器时遇到问题:CLEditor,如果我在其上使用jQuery blur()方法,IE窗口会转到后台。 CLEditor有iframe,它有自己的身体。当您提取该主体并使用body.blur()时,IE浏览器将转到后台。
其他浏览器没有显示该行为,因此如果您遇到此问题,最好使用FF或Chrome。
如果你删除了body.blur(),那么IE的问题可能比你现在少,但你仍然可能会遇到一些小错误(有些东西在某些时候没有失去焦点),但我想你可以活下去用它。但是,如果使用某些逻辑丰富了blur()事件,则可能会出现问题 - 然后找到其定义并将逻辑移动到使用浏览器启动的其他事件(onload或ready)。
答案 4 :(得分:0)
document.body.blur=function(){document.body.focus()}