我正在使用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密鑰無效。這個錯誤與其他錯誤有何不同?
不能保證'HtmlDocument'在'Navigated'事件觸發前纔可用。 – 2011-02-25 06:08:35