Остановить отчеты об ошибках в HTA (без прав администратора) - PullRequest
0 голосов
/ 07 декабря 2010

Я использую HTA с фреймами, левый фрейм управляет основным фреймом и показывает страницы в нем (например, панель навигации), например: вы нажимаете ссылку «google» слева и она открывается на главномокно.(Это не основная цель HTA, но я просто упрощаю ее объяснение)

Теперь проблема заключается в том, что я пытаюсь открыть веб-страницу с сообщениями об ошибках - HTA постоянно информирует меня оошибки страницы и иногда страница даже не функционирует должным образом.(Отчеты об ошибках не относятся к страницам, которые я создал!) Те же страницы отлично работают в IE.

Важно упомянуть, как и в заголовке, что я или кто-либо из пользователей HTA не имеет администраторапривилегии в системе.

Я гуглил это долгое время, но так и не нашел решения, я буду очень признателен за любой полезный совет или решение проблемы.

Спасибо, Rotem

1 Ответ

1 голос
/ 18 мая 2012

у вас есть пара вариантов, чтобы обойти эту проблему. Лучше всего просто отключить параметр «отображать уведомление о каждой ошибке скрипта» в Internet Explorer. Поскольку вы используете HTA, вы можете программно изменить параметр реестра HKEY_CURRENT_USER (или просто сделать это вручную один раз.)

Второй подход, безусловно, скорее хакерский, но именно так я решил проблему сам, когда создал браузер с вкладками в HTA до того, как в IE был просмотр вкладок. Вместо того, чтобы переходить по URL-адресу в iframe, вы вместо этого захотите AJAX запросить содержимое, добавив блок скрипта, который устанавливает window.onerror в функцию по вашему выбору. Затем введите все содержимое в iframe. Этот подход поглотит любые ошибки и даст вам возможность сообщать о них по своему усмотрению.

В дополнение к внедрению скрипта onerror вам также потребуется выполнить предварительный анализ якорей, чтобы последующие щелчки направлялись через обработчик инъекции ajax. Это оказалось довольно сложным, потому что вы по сути начинаете писать свой собственный браузер. У меня все еще есть исходный код проекта, поэтому я опубликую его в репозитории Bitbucket и позволю вам изучить мой подход.

В противном случае последний вариант - отправить электронное письмо администраторам каждого сайта и сказать им, чтобы они исправили свои чертовы ошибки !!!! но я сомневаюсь, что этот вариант вам удастся: D

EDIT:

После загрузки старого проекта я обнаружил, что решение менее жизнеспособно, чем раньше. Директива заголовка x-frame-options теперь не позволяет google.com загружаться в iframe начиная с IE8. И по какой-то причине ловушка window.onerror не перехватывает ошибки в iframe (на самом деле это может быть проблема вложенного iframe, но у меня нет для этого жизнеспособного решения).

Но у меня все еще была опция проверки «Больше не показывать это сообщение» в диалоге ошибок. Это заставляет диалог об ошибках прекратить сообщать о проблемах для меня и не требует прав администратора.

...