2015-01-14 2 views
3
fatal error: LPWebView encounters an error: Error Domain=WKErrorDomain Code=4 
"A JavaScript exception occurred" UserInfo=0x79d9c700 
{NSLocalizedDescription=A JavaScript exception occurred} 

WKWebView로 JavaScript 함수를 평가하려고 할 때이 오류가 발생했습니다.WKWebView에서 WKErrorDomain 오류 4가 무엇입니까

나는 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") 
} 

이 오류 코드의 의미와 해결 방법은 무엇입니까?

대단히 감사합니다!

답변

8

그래서 우리는 헤더에 파고 경우 :

/*! @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 JavaScriptExceptionOccurred, 또는 WKErrorJavaScriptExceptionOccurred에 해당하는 것입니다.

즉, JavaScript 함수가 오류를 발생시킵니다.

아마 여기에 당신이 이미 추측 할 수 없었던 것은 아닙니다. 해결을 위해 Safari와 같은 웹 브라우저의 개발자 기능을 사용하고 HTML을로드하고 디버깅하는 것이 좋습니다. WWDC 2014 video, "Introducing the Modern WebKit API"에 설명 된대로

는 사실, 바탕 화면 사파리 브라우저는 "당신이 주입 한 모든 사용자 스크립트를 포함하여, 사파리 웹 관리자를 사용하여 WKWebView을 검사합니다."수 WKWebView가 아이폰 OS 시뮬레이터에서 실행중인 응용 프로그램의 메모리에로드되는 동안

다음 iOS 시뮬레이터 상단 메뉴 표시 줄에 개발 데스크톱 사파리 브라우저 및 액세스 를 열고,이를 사용합니다. 그러면 웹보기의 문서 객체가 드롭 다운됩니다.

자바 스크립트 디버깅에 대한 추가 정보를 원하시면, 내 경우 Web Inspector: Understanding Stack Traces

+4

* Safari Web Inspector *를 * iOS Simulator *뿐만 아니라 실제 장치에 연결할 수도 있습니다. 이렇게하려면 장치의 Safari/고급 설정에서 웹 속성을 활성화 한 다음 Xcode에서 평소처럼 앱을 실행하십시오. 귀하의 응용 프로그램은 개발 메뉴의 연결된 장치 하위 메뉴에 나타납니다. –

+1

정말 유용한 통찰력, 감사합니다 – donkey

+0

아무 문제 없어! @ St3fan에서 칩핑을 해 주셔서 감사합니다. –

0

살펴보고, 나는 WKWebview 새로운이었다.
JS가 WKWebview에서 사용 중지 되었기 때문에 발생했습니다.

관련 문제