url 打开时 WebView 加载崩溃

Posted

技术标签:

【中文标题】url 打开时 WebView 加载崩溃【英文标题】:WebView load crashes on url opening 【发布时间】:2022-01-18 20:46:56 【问题描述】:

我有一个从 json 检索 url 的应用程序,当用户单击按钮时,UIWebView 会打开该 url。问题是,当我将 utm 代码添加到 url 时,应用程序开始崩溃并且 UIWebView 返回 nil。我的猜测是应用程序无法解析符号“&”并且它崩溃了。我试图通过输入编码符号“%26”来修改 url,但是我遇到了 Google Analytics 没有读取它的问题...... 有没有办法让“&”符号起作用?先感谢您。 我这样称呼 UiWebView:

self.webView.load(URLRequest(url: URL(string: self.link)!))

【问题讨论】:

打印self.link&URL 中的有效字符。例如,空间不是。但是没有self.link的值,就很难说了。 打印它我看到 & 符号看起来像这样 "&"所以问题是它在html中转换?我不知道为什么会这样 self.link 是什么? 这是包含页面url的字符串,我从json中检索 不管那个字符串是什么,它显然是导致崩溃的原因。但是没有看到它,没有人能告诉你为什么代码会崩溃。正如 SO 所说,“应该更新问题以包含所需的行为、特定问题或错误,以及重现问题所需的最短代码。”在不知道字符串的情况下无法重现它。 【参考方案1】:

正如 cmets 中所提到的,如果您尝试将其转换为 URL,而没有看到它,很难说出您的字符串到底有什么问题。

但是,为避免意外崩溃,您应该安全地解开 URL,而不是使用 URL(string: self.link)! 显式解开它。

例如,您可以创建一个 if let:

if let safeURL = URL(string: self.link) 
self.webView.load(URLRequest(url: url)

【讨论】:

以上是关于url 打开时 WebView 加载崩溃的主要内容,如果未能解决你的问题,请参考以下文章

在下一个活动中在 webview 中预加载 URL

从今天扩展程序打开时 iOS 应用程序崩溃

如何使用 Android Kotlin 在 WebView 中加载 URL?

仅在模态打开时加载 iframe src

ps打开时电脑就崩溃关机是怎么了

WinForm打开时如何关注WebView2?