上篇文章中講到了如獲取JSContext以及如何通過JSContext實現OC調用JS的代碼功能,該文總結下如何通過JavaScript調用OC的代碼,也不麻煩:本文講述直接調用的方法
1:和之前一樣:首先創建JSContext對象,JSContext *context=[webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
2:使用context調用OC的方法:context[@"acount"] = ^(){
NSArray *args = [JSContext currentArguments];
for (id obj in args) {
//打印obj的類型會發現返回的是個JSValue類型的值,這個時候可以轉化成字符串,不能強轉,若是有多個參數的話,會都打印出來
}
}
中括號中的account即是JavaScript中調用的方法的名字,賦給一個block裏邊的是iOS的代碼,調用的時候可以帶參數,也可以不帶,此時參數都可以打印出來
可以通過context人爲的執行一段JS代碼試一試,例如一個參數的餓函數:
nsstring * JSSstr = @"account('參數')"
[context evaluateScript:JSstr];
通過執行我們會發現,執行了上邊的block語句塊,即實現了通過JS直接調用OC函數