2011-02-25 69 views
1

我正在使用WebBrowser控件打包Javascript API的WinForms控件,因此我需要捕獲Javascript錯誤並將其轉換爲異常。HtmlWindow.Error事件不會觸發Javascript錯誤

_browser.Navigated += BrowserNavigated; 
_browser.DocumentText = "..."; 

private void BrowserNavigated(object sender, WebBrowserNavigatedEventArgs e) { 
    _browser.Document.Window.Error += ScriptError; 
} 

private void ScriptError(object sender, HtmlElementErrorEventArgs e) { 
    MessageBox.Show(e.Description); 
    e.Handled = true; 
} 

我知道,如果頁面刷新這個方法行不通,但絕不會在我的情況發生,所以我試圖讓事情變得簡單。在設置DocumentText後執行BrowserNavigated方法,但發生錯誤時,不會調用ScriptError方法。

任何想法?

UPDATE:裝上Error處理器在DocumentCompleted事件,而不是現在Navigated火的一些錯誤的腳本錯誤處理程序。但是,如果由<script>標記指定的Javascript文件無法加載,然後嘗試使用它的函數,我仍然會得到一般錯誤對話框。

這是我需要捕捉錯誤的主要情況,因爲如果JavaScript文件未加載,則表示用戶的API密鑰無效。這個錯誤與其他錯誤有何不同?

回答

0

嘗試在BrowserNavigated事件之外爲ScriptError附加處理程序,就像您爲_browser.Navigated += BrowserNavigated;所做的那樣。目前發生的情況是,當BrowserNavigated觸發時,只有處理程序被附加。

+0

不能保證'HtmlDocument'在'Navigated'事件觸發前纔可用。 – 2011-02-25 06:08:35