Как отключить body.blur() в IE8?
Я работаю над корпоративным веб-приложением, которое работает в IE8. Кажется blur()
вызывается на теле, вызывая отправку окна IE на задний план. К сожалению, этот код находится в той части приложения, которая контролируется поставщиком.
Есть ли возможный способ предотвратить blur()
от вызова на теле без изменения кода, который на самом деле вызывает body.blur()
?
Поскольку это корпоративное приложение, решения вне изменений самого приложения являются приемлемыми; Такие как изменения настроек IE8, реестра и т. Д.
5 ответов
Вы должны быть в состоянии жесткий код blur
к фиктивному методу. Если вы можете войти до его вызова, просто позвоните body.blur = function() {};
(при условии, body
указывает на ваш элемент тела DOM).
Используя jQuery, вы можете просто заблокировать событие:
$('body').blur(function(e) { e.preventDefault(); });
Если использование Firefox является вариантом, у меня есть два ответа, где я предлагаю заменить функцию с помощью Greasemonkey.
- Использование JavaScript для создания горячей клавиши Keylistener для страницы Facebook "Мне нравится"
- Скрипт Greasemonkey для замены функции плагина jQuery?
Если вам нужно использовать IE, вам может потребоваться изменить саму страницу.
(Я знаю, что есть трикси и IE7pro для IE, но никогда не использовал).
У меня была проблема при использовании редактора javaScript: CLEditor, если я использую метод jQuery blur(), окно IE переходит в фоновый режим. У CLEditor есть свой iframe, который имеет свое тело. Когда вы извлекаете это тело и используете body.blur(), браузер IE переходит в фоновый режим.
Другие браузеры не показывают такое поведение, поэтому лучше использовать FF или Chrome, если вы испытываете это.
Если вы удалите body.blur(), возможно, у вас будет меньше проблем с IE, чем сейчас, но все же вы можете столкнуться с некоторыми незначительными ошибками (что-то не теряет фокус в определенный момент), но я полагаю, вы могли бы с этим справиться. Однако, если событие blur () обогащено некоторой логикой, это может быть проблемой - тогда найдите его определение и переместите логику в другое событие, которое запускается с помощью браузера (onload или ready).