웹뷰

2016-10-07 7 views
-1

나는이 프로젝트의 결과를 재현하려고에 자바 스크립트에서 기본 스위프트 함수를 호출 : https://github.com/victorchee/JavaScriptCoreDemo웹뷰

는 즉 나는 그것이 스위프트에서 네이티브 함수를 호출하는 두 번째 버튼을 재현하고자합니다.

내가으로 실행하고 문제는 아래 코드 :

2016-10-07 18:39:01.664 JSCore-Test-01[17603:689101] *** WebKit discarded an uncaught exception in the webView:didFinishLoadForFrame: delegate: <NSUnknownKeyException> [<WebView 0x6080001208c0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key documentView.

이 아이폰 OS의 맥 OS X 상응하는 무엇입니까 :

jsContext = webView.valueForKeyPath("documentView.webView.mainFrame.javaScriptContext") as? JSContext

내가 fallowing 오류가 암호?

답변

0

Small research은 macOS의 WebView API에서이 모든 것이 public API임을 보여줍니다. 컨텍스트를 얻으려면, 단지 JSContext*을 기반으로 목표 - C를 들어

webView.mainFrame.globalContext 
는 C 기반의 API JSGlobalContextRef 객체의 경우

, 또는

webView.mainFrame.javaScriptContext 

에 액세스 할 수 있습니다.

+0

저는 이것을 연구하고 고치려고 노력했습니다. 'webView.mainFrame.javaScriptContext'를 사용하면 에러가 제거되지만'documentView.webView.mainFrame.javaScriptContext'가 iOS 어플리케이션에서했던 것과 같은 방식으로'JSContext *'를로드하지 않습니다. 다음은 Mac OS X에서 여전히'documentView'를 예외의 그림으로 사용하는 것입니다. https://github.com/moon47usaco/JSCore-Test-03/tree/master – Moon47

+0

메인 프레임 컨텍스트에 액세스하는 대신 이 위임 메소드 : https://developer.apple.com/reference/webkit/webframeloaddelegate/1501462-webview –

+0

이렇게하면'jsContext = webView.valueForKeyPath ("documentView.webView.mainFrame.javaScriptContext")를? JSContext'는 예외없이 버튼 상호 작용이 없습니다. 'context.objectForKeyedSubscript ("show") ?. callWithArguments ([ "Swift call"])'로''jsContext'에 지정하지 않고 시도했지만 버튼은 여전히 ​​아무것도하지 않습니다. OS X에서 왜 이렇게 어려운가? 생각해 줘서 고마워. – Moon47

관련 문제