当托管的 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报错
Java+Maven+Embedded Tomcat:项目拒绝识别网页