【问题标题】:HtmlWindow.Error event won't fire on Javascript errorHtmlWindow.Error 事件不会因 Javascript 错误而触发
【发布时间】:2011-07-04 02:25:03
【问题描述】:

我正在开发一个使用WebBrowser 控件包装Javascript API 的WinForms 控件,因此我需要捕获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方法。

有什么想法吗?

更新:DocumentCompleted 事件中附加Error 处理程序而不是Navigated 现在会针对一些 错误触发脚本错误处理程序。但是,如果 <script> 标记指定的 Javascript 文件无法加载,然后我尝试使用其中的函数,我仍然会得到一般错误对话框。

这是我需要捕获错误的主要情况,因为如果 Javascript 文件未加载,则表示用户的 API 密钥无效。此错误与其他错误有何不同?

【问题讨论】:

    标签: c# javascript .net error-handling browser


    【解决方案1】:

    尝试将 ScriptError 的处理程序附加到 BrowserNavigated 事件之外,就像为 _browser.Navigated += BrowserNavigated; 所做的那样。当前发生的情况是当 BrowserNavigated 触发时,只有处理程序被附加。

    【讨论】:

    • Navigated 事件触发之前,不能保证HtmlDocument 可用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    • 2015-07-24
    • 1970-01-01
    • 1970-01-01
    • 2014-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多