iOSアプリからJavaScriptを呼び出して返り値を受け取りたい場合、以下のように書けば返り値を受け取ることができます。非同期なので実行結果が返ってくる前に、次の行がどんどん実行されていきます
HTML+JavaScript
function sum(a, b) { return a + b; }
iOS
var jscript = "sum(1,2);" webView.evaluateJavaScript(jscript, completionHandler: { (object, error) -> Void in var ret = object as! NSNumber println( "答え: \(ret)" ) })
ちなみにUIWebViewだとこんな感じ。非同期ではありません。
var jscript = "sum(1,2);" var ret = WebView.stringByEvaluatingJavaScriptFromString(jscript) as String! println( "答え: \(ret)" )
というわけで、UIWebViewからWKWebViewに切り替えたい場合、JavaScriptからの返り値を受け取る処理を入れているとプログラムの流れが変わるので、ちょっと工夫が必要になります