等待 ajax 更改时 Webbrowser 出错

Posted

技术标签:

【中文标题】等待 ajax 更改时 Webbrowser 出错【英文标题】:Error in Webbrowser when I waiting for ajax changes 【发布时间】:2016-01-01 16:46:12 【问题描述】:

我有一个项目,它从 Web 读取内容并将其保存到数据库中。

我使用Timer控件等待ajax变化,已经工作了很长时间没有任何问题。

但出乎意料的是,它不再起作用了。我收到以下错误:

抛出异常:“System.Runtime.InteropServices.COMException”在 SnapshotInfo.exe

附加信息:错误 HRESULT E_FAIL 已从 调用 COM 组件。

关于这个问题的部分代码:

    WebBrowser _browser = new WebBrowser();
    private void Form1_Load(object sender, EventArgs e)
    
        _browser.Dock = DockStyle.Fill;
        _browser.DocumentCompleted += _browser_DocumentCompleted;
        Controls.Add(_browser);
    

    private void _browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    

        if (!timer1.Enabled)
        
            // do any thing
        

    

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    
        _browser.Dispose();
    

    private void timer1_Tick(object sender, EventArgs e)
    
        if (_browser.Document==null || _browser.Document.Body==null) return;
        var body = _browser.Document.Body.Innerhtml; // ----> error here
        if (body.Contains("word"))
        
            // code when word is exist
            timer1.Enabled = false;
        
    

    private void button1_Click(object sender, EventArgs e)
    
        _browser.Navigate(textBox1.Text);
        timer1.Enabled = true;
    

不知道问题出在哪里?

感谢您的帮助

【问题讨论】:

【参考方案1】:

确保您使用的是最新版本的网络浏览器控件,请查看以下链接

Use latest version of Internet Explorer in the webbrowser control

或者您可以将网络浏览器控件替换为另一个网络浏览器引擎,例如 http://www.awesomium.com/,它是免费且更易于使用的

【讨论】:

Webbrowser Control version is 11.0.10240.16485 使用Awesomium引擎是第二个计划,因为重写代码需要时间。谢谢【参考方案2】:

通过删除安全更新 KB3087040 解决了问题!

【讨论】:

以上是关于等待 ajax 更改时 Webbrowser 出错的主要内容,如果未能解决你的问题,请参考以下文章

WebBrowser 文本选择更改时触发事件

再发贴求助,winform WebBrowser加载js出错

尝试处理 /view/ajax 时出错:无法读取未定义的属性“长度”

尝试更改旧提交消息时出错 [重复]

.NET 的 WebBrowser 类的异步/等待实现

C#webbrowser 跨域访问时 如何获得对此网页的绝对权限