Обрабатывать диалоговое сообщение из веб-браузера WPF программно? - PullRequest
1 голос
/ 24 апреля 2019

У меня есть приложение WPF, которое отображает 3 веб-сайта с 3 отдельными элементами управления веб-браузера.Я не контролирую сайты, они сторонние.В двух из них я манипулирую DOM, чтобы показать только элементы, в которых заинтересован мой клиент. А в третьем я захожу в него и манипулирую DOM, чтобы показать конкретные графики.В настоящее время все это работает автономно и действует как своего рода киоск с дисплеем.

Однако иногда на одном из сайтов возникает проблема с JavaScript, которая заставляет браузер отображать сообщение «Остановить выполнение этого скрипта?Сценарий на этой странице вызывает медленную работу вашего веб-браузера. Если он продолжает работать, ваш компьютер может перестать отвечать на запросы "При выборе Да / Нет.Либо было бы хорошо, поскольку страница обновляется с интервалом.(Один час)

Поскольку нет взаимодействия с пользователем, как мне обработать это сообщение?Я также не могу найти событие, которое запускается.

Я реализовал тихий режим для элемента управления ActiveX.Это прекрасно работает для подавления других сообщений.Только не этот.

Я отредактировал реестр, чтобы веб-элементы управления действовали как IE11.Это сделало страницы более привлекательными, но не предотвратило проблему.

Проблема не возникает немедленно, и при этом она не является предсказуемой или индуцируемой.Я зарегистрировал использование памяти веб-сайтов с помощью инструментов Chrome.Утечки нет, пока что-то не произойдет, и я не получу сообщение.Поэтому я считаю, что случай, когда сторонний JavaScript-обработчик неожиданно завершается с ошибкой.

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

- Изменить, чтобы добавить: для большей ясности рассматриваемое сообщение выглядит так: https://superuser.com/questions/408886/stop-running-this-script-is-this-legit

, а не то, что здесь показано: https://www -01.ibm.com / support / docview.wss? Uid = swg21680774

Сообщение об исключении выглядит следующим образом:

The requested resource is in use. (Exception from HRESULT: 0x800700AA)e.Exception.Message.
   at MS.Win32.UnsafeNativeMethods.IWebBrowser2.Navigate2(Object& URL, Object& flags, Object& targetFrameName, Object& postData, Object& headers)
   at System.Windows.Controls.WebBrowser.DoNavigate(Uri source, Object& targetFrameName, Object& postData, Object& headers, Boolean ignoreEscaping)
   at TVdisplay.MainWindow.reload_bi(Object sender, EventArgs e) in C:\Users\...\MainWindow.xaml.cs:line 201

У меня естьблоки try, обернутые вокруг кода, запускаются при манипулировании DOMЭто еще не вызвало исключения.Только когда я пытаюсь перейти с помощью (я предполагаю) веб-браузера с минимальным таймером для обновления.

private void reload_bi(object sender, EventArgs e)
{
    try
    {                
        webbrowser.Navigate("http://somewebsite.com"); //line 201
    }
    catch (Exception error)
    {
        logThoseErrors(DateTime.Now.ToString());
        logThoseErrors(error.Message.ToString());
        logThoseErrors(error.StackTrace.ToString());                
    }          
}

Спасибо

...