当网页上有 ajax 事件时, webbrowser 的 documentcompleted 事件是无法响应的。
请问通过什么方法才能让 webbrowser 响应 ajax 异步完成的事件?
请高手指点,分不够可以加,谢谢!P.S. 一定要基于 webbrowser,不要用到 timer

解决方案 »

  1.   

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            WebBrowser1.Navigate("about:blank") 
    While WebBrowser1.ReadyState <>WebBrowserReadyState .Complete
    Application.Doevents()
    wend
            Dim doc As New Object
            doc = WebBrowser1.ActiveXInstance
            doc.document.designmode = "On"
        End Sub
    异步  加载完后再设置designMode为on
      

  2.   

    ajax 是调用XMLHttpRequest来异步进行后台的通讯 
    只能获得ReadyState才判断
    private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
    if (webBrowser1.ReadyState < WebBrowserReadyState.Complete || webBrowser1.Url.ToString() == LastUrl) return;
    LastUrl = webBrowser1.Url.ToString();
    }
    public string LastUrl
    {
      get;set;
    }
      

  3.   

    好像都不对,测试下来无法截获 ajax 事件
      

  4.   

    得看网页ajax怎么写的
    用IDispatchEx给window对象增加ajax调用的函数名相同的属性,属性类型是IDispatch
    C#写这个比较麻烦,用C++比较容易
      

  5.   

    建议换个角度去处理,在c#直接处理webBrowser的ajax会很困难,比方说做AJAX时一般都会将通信结果在页面中表现出来,不去控制ajax的通信过程而是处理页面显示事件就容易的多了