xcode 什么是WKErrorDomain error 4 from WKWebView

wwtsj6pe  于 2023-03-24  发布在  其他
关注(0)|答案(1)|浏览(113)
fatal error: LPWebView encounters an error: Error Domain=WKErrorDomain Code=4 
"A JavaScript exception occurred" UserInfo=0x79d9c700 
{NSLocalizedDescription=A JavaScript exception occurred}

我在尝试使用WKWebView计算JavaScript函数时遇到了此错误。
我使用loadHTMLString将模板加载到webview。

let bundle = NSBundle.mainBundle()

if let editorURL = bundle.URLForResource(self.kTemplateName, 
                                              withExtension: "html") {
  var error : NSError?
  //get html string from editor.html
  if let htmlString = String(contentsOfURL: editorURL, encoding: NSUTF8StringEncoding, error: &error){
    if error != nil {
      assertionFailure("error encountered reading html string for \(error)")
    } else {
      self.loadHTMLString(htmlString, baseURL: bundle.bundleURL)
    }
  }

} else {
  assertionFailure("LPWebView template not found")
}

我想知道这个错误代码是什么意思以及如何解决它?
非常感谢!

sigwle7e

sigwle7e1#

所以如果我们深入研究标题:

/*! @constant WKErrorDomain Indicates a WebKit error. */
@availability(iOS, introduced=8.0)
let WKErrorDomain: String

/*! @enum WKErrorCode
 @abstract Constants used by NSError to indicate errors in the WebKit domain.
 @constant WKErrorUnkcnown                       Indicates that an unknown error occurred.
 @constant WKErrorWebContentProcessTerminated   Indicates that the Web Content process was terminated.
 @constant WKErrorWebViewInvalidated            Indicates that the WKWebView was invalidated.
 @constant WKErrorJavaScriptExceptionOccurred   Indicates that a JavaScript exception occurred.
 */
@availability(iOS, introduced=8.0)
enum WKErrorCode : Int {
    
    case Unknown
    case WebContentProcessTerminated
    case WebViewInvalidated
    case JavaScriptExceptionOccurred
}

错误代码4对应于JavaScriptExceptionOccurredWKErrorJavaScriptExceptionOccurred
换句话说,JavaScript函数会导致一些错误。
可能这里没有更多你猜不到的了。为了解决问题,我建议使用Safari等Web浏览器的开发人员功能,加载HTML并调试。
事实上,正如WWDC 2014 video, "Introducing the Modern WebKit API"中所解释的那样,您的桌面Safari浏览器可以 *“使用Safari Web检查器检查WKWebView,包括您注入的任何用户脚本。
要使用此功能,当WKWebView加载到iOS模拟器上运行的应用程序的内存中时,打开桌面Safari浏览器并访问顶部菜单栏上的Develop,然后访问iOS模拟器。这将显示Web视图的文档对象的下拉列表。
有关调试JavaScript的更多信息,请查看Web Inspector: Understanding Stack Traces

相关问题