猿问

如何在 UWP 中的 WebView 中捕获页面的 JavaScript 错误和警告

我想从我在UWP 应用程序内的WebView 中托管的页面捕获并记录任何 JavaScript 错误或警告。

我希望能够为我在应用程序的 WebView 中加载的任何网页捕获这些错误。

我知道 Visual Studio 有一种机制可以附加到 UWP 应用程序的 WebView 并记录 JavaScript 错误,但我想在没有 Visual Studio 的情况下做同样的事情。

这个JavaScript 错误处理的答案显示了如何在纯 JavaScript 中执行此操作,但我需要知道如何以及何时将这样的代码注入 WebView,或者是否有更好的方法来执行此操作。

如果可能的话,我希望在 F12 工具中有类似于 JavaScript 控制台的东西,但我至少需要能够获得 JavaScript 错误和警告。


天涯尽头无女友
浏览 247回答 1
1回答

不负相思意

这个 JavaScript 错误处理的答案显示了如何在纯 JavaScript 中执行此操作,但我需要知道如何以及何时将这样的代码注入 WebView,或者是否有更好的方法来执行此操作。您可以尝试使用InvokeScriptAsync和 JavaScripteval函数在导航完成时将内容注入网页。然后,如果您想在您的应用程序中获取错误消息,您可以使用 window.external.notify字符串参数将信息发送回您的应用程序。要接收这些消息,请处理ScriptNotify事件。我做了一个简单的代码示例供您参考:<!DOCTYPE html><!--this is my local web page HTMLPage1.html--><html xmlns="http://www.w3.org/1999/xhtml"><head><meta charset="utf-8" /><title></title><script type="text/javascript">&nbsp; &nbsp; function test() {&nbsp; &nbsp; }</script></head><body><input&nbsp; value="click" onclick="test1()" type="button"/></body></html><WebView x:Name="webview" NavigationCompleted="webview_NavigationCompleted" ScriptNotify="webview_ScriptNotify" Source="ms-appx-web:///HTMLPage1.html"></WebView>private void webview_ScriptNotify(object sender, NotifyEventArgs e){&nbsp; &nbsp; string msg = e.Value;}private async void webview_NavigationCompleted(WebView sender, WebViewNavigationCompletedEventArgs args){&nbsp; &nbsp; string functionString = "window.onerror = function(error, url, line) {window.external.notify( 'ERR:'+error+' url'+url+' Line: '+line);};";&nbsp; &nbsp; var ret = await webview.InvokeScriptAsync("eval", new string[] { functionString });}
随时随地看视频慕课网APP
我要回答