我正在开发一个 WinForms 控件,它使用 WebBrowser
包装 Javascript API控制,所以我需要捕获 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;
}
我知道如果刷新页面,此方法将不起作用,但在我的情况下永远不会发生这种情况,所以我试图让事情变得简单。 BrowserNavigated
设置DocumentText
后执行方法,但是当发生错误时,ScriptError
方法没有被调用。
有什么想法吗?
更新:附加 Error
DocumentCompleted
中的处理程序事件而不是 Navigated
现在针对某些错误触发脚本错误处理程序。但是,如果由 <script>
指定的 Javascript 文件标签加载失败,然后我尝试使用其中的函数,但仍然收到通用错误对话框。
这是我需要捕获错误的主要情况,因为如果 Javascript 文件未加载,则意味着用户的 API key 无效。这个错误与其他错误有何不同?
最佳答案
尝试在 BrowserNaviated 事件外部附加 ScriptError 的处理程序,就像对 _browser.Navierated += BrowserNaviated;
所做的那样。当前发生的情况是,当 BrowserNaviged 触发时,仅附加处理程序。
关于c# - HtmlWindow.Error 事件不会因 Javascript 错误而触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5114097/