Objective-C與JS交互 —— JavaScriptCore

JavaScriptCore是Webkit的一個重要組成部分,主要是對JS進行解析和提供執行環境。iOS7后蘋果在iPhone平臺推出,極大的方便了我們對js的操作。我們可以脫離webview直接運行我們的js。iOS7以前我們對JS的操作只有webview里面一個函數stringByEvaluatingJavaScriptFromString
,JS對OC的回調都是基于URL的攔截進行的操作。大家用得比較多的是WebViewJavascriptBridgeEasyJSWebView這兩個開源庫,很多混合都采用的這種方式。

  • 1.UIWebView加載完成注冊Native代碼
#pragma mark - UIWebViewDelegate

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    NSLog(@"webViewDidFinishLoad");
    
    JSContext *context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
    
    [context evaluateScript:@"var arr = [3, 4, 'abc'];"];
    
    [self addLocationWithContext:context];
}

- (void)addLocationWithContext:(JSContext *)context {
    context[@"getLocation"] = ^() {
        // 獲取位置信息
        ···
        
        // 將結果返回給js
        NSString *locationStr = [NSString stringWithFormat:@"setLocation('%@')",@"廣東省深圳市南山區高新南一道TCL大廈"];
        [[JSContext currentContext] evaluateScript:locationStr];
    };
}
  • 2.JS調用OC
   function locationClick() {
                getLocation();
            }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容