iOS UIWebView中Objective-C與Javascript的深層交互(二)

 上篇文章中講到了如獲取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函數

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章