有没有办法抓到"Received an unexpected URL from the web process:"

is there no way to catch "Received an unexpected URL from the web process:"

我正在尝试使用 UIWebView 和 Swift 使用 WKWebView 重写 objective-c 应用程序。 该应用程序显示大量本地内容。 虽然我可以毫无问题地在 WKWebView 中显示初始网页。当我单击指向更多本地内容的 link 时,出现以下错误:

收到来自网络进程的意外 URL:“...”

该内容使用非标准 href 来标识本地内容。使用 UIWebView shouldStartLoadWithRequest api 我能够拦截这个点击的 linked 并以我可以加载适当的本地内容的方式重写 href。

到目前为止,我无法在 WKWebView 中找到任何可以让我完成同样事情的东西。 我正在使用这些内容,而不是创建它,所以我无法选择更改 href 的格式。

我试过:

decidePolicyFor navigationResponse decidePolicyFornavigationAction 导航失败 didFailProvisionalNavigation 导航 didStartProvisionalNavigation 导航

我尝试添加自定义 URLSchemeHandler... 什么都不允许我拦截 link.

但在控制台中我收到错误:

收到来自网络进程的意外URL: 从 Web 进程收到无效消息 "WebPageProxy.DecidePolicyForNavigationAction"。 无法发出服务信号com.apple.WebKit.WebContent:113:找不到指定的服务

它确实得到 decideActionPolicyFor:

我错过了什么吗? 任何帮助将不胜感激!

摩根·琼斯

WKURLSchemeHandler 是用于 WKWebView 的方法。

但是我们发现代码如下:

"script type="text/javascript" src="xxx-local:.js"

当通过 https 访问页面时无法识别我们的自定义方案。

样式表也一样。 不过仍然适用于图像。

你的 link 长什么样?

P.S。您无法拦截已知方案(例如 http)

是的,有办法,使用这个功能

func webViewWebContentProcessDidTerminate(WKWebView){}

捕获错误,您可以返回或重新加载网络视图。