以编程方式处理来自WPF的Webbrowser的对话框消息?

时间:2019-04-24 15:02:08

标签: c# wpf webbrowser-control

我有一个WPF应用程序,该应用程序显示3个带有3个单独的Web浏览器控件的网站。我无法控制这些网站,它们是第三方。我中的两个人操作DOM以仅显示我的客户感兴趣的元素。第三个人登录并操作DOM以显示特定的图。目前,这一切都可以自动进行,并且可以作为一种仅用于展示的信息亭。

但是,有时其中一个站点会出现一些JavaScript问题,这将提示浏览器显示消息“停止运行此脚本?此页面上的脚本导致您的Web浏览器运行缓慢。如果继续运行,您的计算机可能会变得无响应”,选择“是/否”。每隔一段时间刷新页面就可以了。 (一个小时)

由于没有用户交互,该如何处理此消息?我也找不到触发的事件。

我已经为ActiveX控件实现了静默模式。它非常适合抑制其他消息。只是没有这个。

我已编辑注册表,以使Web控件充当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

当我操作DOM时,我有遍历代码块的try块。它尚未引起异常。仅当我尝试使用(我想)进行导航时,Web浏览器控件的刷新时间最短。

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());                
    }          
}

谢谢

0 个答案:

没有答案