3

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

是否有任何可能的方法来防止blur()在不修改实际调用的代码的情况下被调用body.blur()

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

4

5 回答 5

2

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

于 2012-09-17T20:40:51.497 回答
1

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

$('body').blur(function(e) { e.preventDefault(); });
于 2012-09-17T20:52:44.110 回答
0

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

  1. 使用 javascript 为 facebook 页面“like”创建一个 keylistener 热键
  2. Greasemonkey 脚本替换 jQuery 插件功能?

如果您必须使用 IE,您可能需要更改页面本身。
(我知道 IE 有 Trixie 和IE7pro,但从未使用过)。

于 2012-09-17T20:59:38.030 回答
0

我在使用 javaScript 编辑器时遇到了一个问题:CLEditor,如果我在其上使用 jQuery blur() 方法,IE 窗口会转到后台。CLEditor有它的 iframe,它有自己的主体。当您提取该主体并使用 body.blur() 时,IE 浏览器将转到后台。

其他浏览器没有显示这种行为,因此如果您遇到这种情况,最好使用 FF 或 Chrome。

如果你删除 body.blur(),你可能会遇到比现在更少的 IE 问题,但你仍然可能会遇到一些小错误(某些事情在某些时候并没有失去焦点),但我想你可以忍受它。但是,如果 blur() 事件包含一些逻辑,则可能会出现问题 - 然后找到它的定义并将逻辑移动到由浏览器启动的其他一些事件(onload 或 ready)。

于 2012-10-18T10:32:19.070 回答
0
document.body.blur=function(){document.body.focus()}
于 2015-11-25T08:12:58.027 回答