Swift WKWebView获取标题异常:阿拉伯语多词标题返回空
WKWebView获取阿拉伯语多单词标题返回空值的问题与临时修复
问题描述
我在使用WKWebView获取网页标题时遇到了一个奇怪的异常情况:
- 网页标题为英文时,通过
webView.title获取完全正常 - 标题是单个阿拉伯语单词时,也能正常读取到内容
- 但标题是阿拉伯语且包含2个及以上单词时,
webView.title会返回空值
附相关场景截图说明:
- 英文标题正常显示
- 单个阿拉伯语单词标题正常显示
- 两个阿拉伯语单词标题返回空值
问题复现代码
最初触发问题的代码如下:
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { let webTitle:String = webView.title! print("Title: \(webTitle)") self.title = webTitle }
临时修复方案
正如@EmilioPelaez所说,这看起来是WKWebView的一个Bug。我参考了@the4kman的建议,改用evaluateJavaScript直接读取document.title的方式绕过了这个问题,修复后的代码如下:
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { let javascript = "document.title\n" webView.evaluateJavaScript(javascript) { (result, error) -> Void in if error == nil { self.title = String(describing: result!) } } }
希望官方能尽快修复这个Bug。
内容的提问来源于stack exchange,提问作者Mohammed Yousuf
相关产品推荐
相关产品推荐

