2010-03-26 86 views
0

我將一個HTML字符串值設置爲webbrowser.DocumentText。問題是,它有時會起作用,有時會掛起,而沒有完成documentcompleted事件。可能是什麼問題?C#怪異行爲中的Webbrowser控件

請回復,儘快..

感謝,

Jepe

+4

你有DocumentText一個樣品是造成我們的問題? – Axarydax 2010-03-26 09:45:25

+0

你能否顯示導致問題的代碼? 「掛」的樣子究竟如何? – 2010-03-26 10:05:22

+0

我無法發佈示例documenttext,但它只是基本的HTML與JavaScript和CSS。當我設置documenttext時,沒有任何反應,並且documentcompleted從未觸發過。在documenttext中呈現的html可能會導致問題? – 2010-03-26 10:21:55

回答

1

只是一個想法:與所有的網絡'dynam主義「的今天,一個頁面是從來沒有真正的」完全已加載「狀態。在DocumentComplete之後,頁面的OnLoad事件被觸發,然後觸發放置在這個事件中的任何腳本,然後javascript定時器可以用來啓動一些資源的下載/上傳,或者使用AJAX等改變頁面。

我相信AJAX調用可能導致您的WebBrowser控件出現各種看不見的問題;因爲在加載頁面期間,AJAX可能導致多個Navigating()事件觸發。因此,您的應用會在該頁面上遇到多個DocumentCompleted事件觸發。

一個可能的解決方案可能是監視頁面更改並嘗試找出可能發生了什麼變化。爲此,您可能需要查看Notify方法。

通過MSHTML時調用的變化發生在標記 容器與它相關聯的 的內容 。

Thisthis討論可以幫助你想出類似如下:

HtmlElement target = _webBrowser.Document.GetElementById("somedivthatwillbepopulatedbytheajaxrequest"); 

if (target != null) 
{ 
    target.AttachEventHandler("onpropertychange", new EventHandler(handler)); 
}