2011-02-25 79 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