30

UIWebView では、次のことを実行できますJSContext

[webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"]

同じ方法は WKWebView では機能せず、このコード行に到達するとアプリがクラッシュします。

WKWebView で JSContext を取得する方法はありますか?

前もって感謝します。

4

2 に答える 2

14

レイアウトとjavascriptは別のプロセスで処理されるため、コンテキストを取得できません。

代わりに、スクリプトを webview 構成に追加し、ビュー コントローラー (または別のオブジェクト) をスクリプト メッセージ ハンドラーとして設定します。

次に、次のように JavaScript からメッセージを送信します。

window.webkit.messageHandlers.interOp.postMessage(message)

スクリプト メッセージ ハンドラーはコールバックを受け取ります。

- (void)userContentController:(WKUserContentController *)userContentController 
                            didReceiveScriptMessage:(WKScriptMessage *)message{
    NSLog(@"%@", message.body);
}
于 2014-09-15T19:55:27.703 に答える