当托管的 Chromium Embedded 出现 JavaScript 错误时,是不是可以获得通知?

Posted

技术标签:

【中文标题】当托管的 Chromium Embedded 出现 JavaScript 错误时,是不是可以获得通知?【英文标题】:Is it possible to get notifed when hosted Chromium Embedded has a JavaScript error?当托管的 Chromium Embedded 出现 JavaScript 错误时,是否可以获得通知? 【发布时间】:2013-05-24 15:23:30 【问题描述】:

在过去使用标准 WinForms WebBrowser 控件时,只要在托管 Web 浏览器控件的当前加载页面内发生脚本错误,我就能够获得 OLECMDID_SHOWSCRIPTERROR notifications。

现在我改用Chromium Embedded(通过CefSharp .NET wrapper)并寻找类似的东西。

我可以想到injecting some javascript code,但我真的很想有一个根本不需要更改 html 的解决方案。

我的问题:

当当前加载的页面中发生 JavaScript 错误时,Chromium Embedded 是否有可能通知我的应用程序?

(我也是 asking this in the CefSharp groupant 认为这可能是独立的,所以也在 Stack Overflow 上问)

更新 1:

我看到似乎有一个 OnUncaughtException function 目前似乎没有由 CefSharp 实现。不过,不确定这是关于 JavaScript 错误还是 CEF 错误。

【问题讨论】:

【参考方案1】:

虽然它不会让您明确知道何时出现错误,但您可以绑定到ConsoleMessage 事件。我将它与 Log4Net 结合使用来跟踪来自 Chromium 的所有控制台消息,其中包括大多数 javascript 错误:

var webView = new WebView(startUrl, browserSettings);
webView.ConsoleMessage += (sender, args) =>
                                        
                                log.Debug(string.Format("Webview 0(1): 2", 
                                                                   args.Source, 
                                                                   args.Line, 
                                                                   args.Message))
                                         ;

【讨论】:

ConsoleMessage 事件不会因错误而引发,至少不是所有错误。尝试挂钩 window.onerror 先将消息通过管道传输到控制台。 在我的 Angular 应用程序中,我添加了一个 $httpProvider.interceptors 以记录失败的调用,ConsoleMessage 将接收到 那时引发的 ConsoleMessage 事件是什么?

以上是关于当托管的 Chromium Embedded 出现 JavaScript 错误时,是不是可以获得通知?的主要内容,如果未能解决你的问题,请参考以下文章

用于Delphi的铬嵌入 - 当显示模态窗口时,不会触发TChromiumOSR.OnPaint

Springboot项目编译正常启动Unable to start embedded Tomcat报错

Chromium 无头页面无响应但适用于 Firefox

Java+Maven+Embedded Tomcat:项目拒绝识别网页

Embedded C Parse Server 迁移服务器URL

当一个托管对象在 moc A 中被删除时,它还会出现在 moc B 中吗?