如何在IE8中禁用body.blur()?

时间:2012-09-17 20:33:23

标签: javascript internet-explorer-8 onblur document-body

我在IE8中运行的企业Web应用程序上工作。看起来正在身体上调用blur(),导致IE窗口被发送到后台。不幸的是,此代码位于由供应商控制的应用程序的一部分中。

在没有修改实际调用blur()的代码的情况下,有没有办法阻止body.blur()被身体调用?

由于这是一个企业应用程序,因此可以接受应用程序本身更改之外的解决方案;比如改变IE8设置,注册表等等。

5 个答案:

答案 0 :(得分:2)

您应该能够将blur硬编码为虚拟方法。如果你可以在调用之前进入,只需调用body.blur = function() {};(假设body指向你的DOM主体元素)。

答案 1 :(得分:1)

使用jQuery你可以简单地阻止事件:

$('body').blur(function(e) { e.preventDefault(); });

答案 2 :(得分:0)

如果使用Firefox 一个选项,我有两个答案,我建议使用Greasemonkey替换该功能。

  1. Using javascript to create a keylistener hotkey for facebook page "like"
  2. Greasemonkey script to replace jQuery plugin function?
  3. 如果您必须使用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()}