Ошибка сценария Internet Explorer, сообщение с веб-страницы, доступ запрещен - PullRequest
1 голос
/ 16 августа 2010

Я работаю со встроенным (Active X?) Экземпляром IE в приложении VB6.

В браузере отображается демографическая информация на основе выбранного человека (отображается в виде списка).

Все отлично работает, пока я не попытаюсь быстро выбрать разных людей из списка (нажимая случайно на разных людей так быстро, как я могу).После нескольких кликов получите две ошибки.

Первым является « Ошибка сценария Internet Explorer »

В нем говорится:

Произошла ошибка в сценарии на этой странице
Строка:
Char:
Ошибка:
Код:
URL: Вы хотите продолжить выполнение скриптов на этой странице?да | Нет

(строка, символ, ошибка, код, URL-адрес пустые).

Вторая ошибка появляется непосредственно над первой.

Там написано:

" Сообщение с веб-страницы

В этом диалоговом окне произошла ошибка
Ошибка: 53 Разрешение отклонено
"

Страница выполняет несколько вызовов AJAX, а также содержит несколько iFrames (я думаю, что это причина).

Любой совет о том, как отладить / решить / избежать проблемы, был бы очень признателен.

Спасибо!

РЕДАКТИРОВАТЬ

Вот изображение ошибки

Ошибка http://img84.imageshack.us/img84/3647/errori.png

РЕДАКТИРОВАТЬ

Я получаю анонимную функцию JScript. Источник недоступен, когда мне удается обнаружить ошибку.

No Source Available

РЕДАКТИРОВАТЬ

Я успешно поймал некоторые ошибки.Кажется, что они происходят в основном из MicrosoftAjax.js

  • Происходит последовательно: MicrosoftAjax.js - Sys._Application.callBaseMethod (this, "initialize");Ожидаемый объект
  • Произошел один раз: jquery-1.4.2.min.js - b.InsertBefore (d, b.firstChild) Ожидаемый объект
  • Произошел один раз: исключение нехватки памяти.

Мое хост-приложение вообще не использует MicrosoftAjax.js, но все дочерние приложения iFrame являются приложениями asp.Net.

Ответы [ 4 ]

5 голосов
/ 20 августа 2010

После долгих испытаний и попыток выяснить, действительно ли мне нужно отредактировать файл MicrosoftAjax.js для решения проблемы, я наконец нашел решение, которое, похоже, решило проблему.

Я добавил

<script type="text/javascript">         
  window.onerror = function (e) { return true; }        
</script>

в заголовок любого приложения, которое я загружал через iFrames, а также на родительскую страницу.Прошло около двух дней с тех пор, как я внес эти изменения, и пока все хорошо (хотя мне понадобится еще несколько дней тестирования, чтобы подтвердить, что он работает на 100%).

Я пробовал это раньше, но безуспешно,но это было связано с положением Писания.У меня были другие скрипты (такие как jQuery и MicrosoftAjax), которые были расположены перед ним.Эти скрипты выдавали ошибки еще до того, как мой скрипт window.onerror был оценен.

Другая интересная вещь заключается в том, что ошибки iFrame, кажется, всплывают независимо от обработки ошибок на родительской странице.Поэтому я вошел в наш репозиторий Code и внес необходимые изменения в каждое из приложений, которые я извлекал.

Наконец, я хочу поблагодарить @Jacob за его первоначальную помощь в устранении неполадок в этой проблеме.

РЕДАКТИРОВАТЬ

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

2 голосов
/ 18 августа 2010

Если вы хотите просто подавить ошибки JavaScript, попробуйте установить для свойства Silent WebBrowser значение True.

1 голос
/ 17 августа 2010

Я обнаружил, что большинство ошибок IE "Permission denied" связано с совместным использованием объектов Javascript между окнами / фреймами. Поскольку вы производите его быстрым случайным нажатием, я предполагаю, что это связано с тем, что iframes / windows закрываются, пока к их содержимому все еще обращаются.

Одна из стратегий, которую вы могли бы использовать, чтобы избежать этих проблем, - никогда не делить объекты между кадрами. Где бы ни создавался объект, этот фрейм должен отвечать за все операции и доступ к его элементам. Внешний доступ должен полностью контролироваться через вызовы «интерфейсных» функций Javascript.

0 голосов
/ 09 апреля 2013

Попробуйте

WebBrowser1.ScriptErrorsSuppressed = true;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...