?一.Objective-C調(diào)用javaScript
? iOS 開發(fā)中,原生界面調(diào)用UIWebView 一般是通過 stringByEvaluatingJavaScriptFromString 這個方法來調(diào)用UIWebView 界面上的Javascript 代碼的。方法很簡單,用法更簡單。只需要在UIWebView 的回調(diào)方法- (void)webViewDidFinishLoad:(UIWebView *)webView 之中直接調(diào)用 ?[self.webview stringByEvaluatingJavaScriptFromString:@"alert('do')"];
二.javaScript 調(diào)用 Objective-C
?業(yè)界一般有如下兩種方案:
1.曲線救國方案:
UIWebView 內(nèi)發(fā)起的所有請求,都可以通過delegate函數(shù)在原生界面得到通知,于是我們可以在UIWebView 內(nèi)發(fā)起一個特殊的網(wǎng)絡(luò)請求,一般情況下請求的是一個虛擬地址(比喻說:gap://mathsjfos),主要是幫助我們在delegate方法中得到界面通知,完成邏輯調(diào)轉(zhuǎn)。這- (void)webViewDidFinishLoad:(UIWebView *)webView 中 處理界面邏輯,然后可以通過stringByEvaluatingJavaScriptFromString 回到j(luò)avaScript。
2.直接調(diào)用方案:
iOS7 中新加入 JavaScriptCore.framework框架,用來處理JavaScript。JavaScriptCore 是蘋果 Safari 瀏覽器的 JavaScript 引擎,JavaScriptCor在 OS X 平臺上很早就存在的,而在 iOS 平臺,直到iOS7才對外開放,并提供了 Objective-C 的接口。
了解以下幾個類:
JSContext:An instance of JSContext represents a JavaScript execution environment.(一個 Context 就是一個 JavaScript 代碼執(zhí)行的環(huán)境,也叫作用域。)
JSValue:Conversion between Objective-C and JavaScript types.(JS是弱類型的,ObjectiveC是強(qiáng)類型的,JSValue被引入處理這種類型差異,在 Objective-C 對象和 JavaScript 對象之間起轉(zhuǎn)換作用)
可以通過兩種方式在 JavaScript 中調(diào)用 Objective-C
■ Blocks :JS functions (對應(yīng) JS 函數(shù))
■ JSExport protocol :JS objects (對應(yīng) JS 對象)
這里我們只介紹第一種方式。

說到這里,其實在JavaScriptCore.framework框架內(nèi),直接可以通過[context evaluateScript:testScript];完成Objective-C對javaScript的調(diào)用。