c# - HtmlWindow.Error 事件不会因 Javascript 错误而触发

标签 c# javascript .net error-handling browser

我正在开发一个 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/

相关文章:

c# - 在本地 TFS 2015 中运行 Visual Studio 负载测试

javascript - 如何延迟内联 Javascript?

.net - 服务不可用 管理中心 SharePoint 2010

c# - 在 C# 中显示分层数据

c# - 如何推断基类中派生类的类型?

c# - 哪些程序集在 "found conflict between different versions"中发生冲突?

javascript - 在 CefBrowser 中使用 JavascriptResponse 获取图像(无需下载两次)

javascript - 从 JavaScript 传递参数

javascript - JQuery 自动完成 - Http 基本身份验证

c# - GridView 链接列值