有什么方法可以从WebView中获取JavaScript错误吗?我的意思是以下错误和可能的警告?
x1c 0d1x的数据
我正在运行具有以下扩展名的JS代码:
extension WKWebView {
func evaluateJavaScriptWithReturn(_ javaScriptString: String) -> String? {
var finished = false
var jsValue: String?
evaluateJavaScript(javaScriptString) { (result, error) in
if error == nil {
if result != nil {
jsValue = result as? String
}
} else {
jsValue = nil
}
finished = true
}
while !finished {
RunLoop.current.run(mode: .defaultRunLoopMode, before: Date.distantFuture)
}
return jsValue
}
}
字符串
但是error
不是我正在寻找的!有没有办法在我的应用程序中,上述错误?非常感谢!
4条答案
按热度按时间ego6inou1#
为了处理错误,我们将在加载到页面中的HTML中添加一些JavaScript,以通知我们的本地代码有关错误。
首先,您需要使用脚本消息处理程序设置Web视图:
字符串
我在本地创建完整的HTML文档并注入以下JavaScript:
型
(我有检查和日志,因为我有时在浏览器中运行生成的JavaScript。)如果您想将
WKUserScript
注入到您不能完全控制的HTML中,您也可以使用WKUserContentController
添加WKUserScript
。接下来,当你加载一个字符串到你的web视图中时,一定要使用
localhost
作为基本URL。如果你不这样做,所有的错误都将是"Script error."
。型
现在定义您的
WKScriptMessageHandler
:型
对于添加到
WKUserContentController
的其他消息,可以在switch语句中添加其他情况。dwthyt8l2#
试试下面的方法。
首先,注入JS代码捕获html内容中的错误:
字符串
其次,显示WKWebView委托方法中的错误:
型
记住设置委托:
型
如果你想避免警报,另一种方法是使用
decidePolicyForNavigationAction
方法来接收JS的回调,就像window.open("error://message","_self")
一样zxlwwiss3#
在JavaScript中,挂接window onerror事件以回调脚本消息处理程序:
字符串
你可能只是得到“脚本错误.”消息,这是一个权限问题。(documentation)根据你的设置,这可以通过在你的首选项中添加权限来修复。Swift:
型
2fjabf4q4#
我发现的最好的解决方案是使用Safari的Web Inspector。有说明找到here。
我一直遇到
Script error.
消息与陈云的解决方案(这是伟大的)没有可操作的内容。