淺談iOS與JS互動
阿新 • • 發佈:2019-01-22
#import <JavaScriptCore/JavaScriptCore.h>
1.iOS呼叫JS function
// js程式碼中的一個function:
JS_editor.setBold = function() {
document.execCommand('bold', false, null);
this.enabledEditingItems();
}
//OC程式碼調動JS的function
說明:OC中的webView(UIWebView、WKWebView)有此方法:- (void)setBold { NSString *JS = @"JS_editor.setBold();"; [self.webView stringByEvaluatingJavaScriptFromString:JS]; }
stringByEvaluatingJavaScriptFromString:
可以呼叫js程式碼2.JS呼叫OC method
//首先OC需要宣告一個method供JS呼叫,宣告方法位置一般選擇在webView的代理方法
webViewDidFinishLoad:
- (void)webViewDidFinishLoad:(UIWebView *)webView { JSContext *context = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"]; context[@"pushAlert"] = ^(){ UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"tip" message:@"Code execution success!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil]; [alert show]; }; }
//程式碼中聲明瞭一個名叫“pushAlert”的不帶引數的method,宣告方式同定義block一樣,可傳遞引數...
//接下來就是在JS程式碼中呼叫OC中宣告的“pushAlert”方法.也可自行定義引數,需要注意的是方法名稱必須一致.
JS_editor.setBold = function() {
document.execCommand('bold', false, null);
this.enabledEditingItems();
//setBlod()之後回撥OC的方法
pushAlert();
}