標籤:objective-c ios7 javascript js和ios相互調用
從iOS7開始 蘋果公布了JavaScriptCore.framework 它使得JS與OC的互動更加方便了。
下面我們就簡單瞭解一下這個架構
首先我匯入framework
方法如下
點擊Linked Frameworks and Libraries 的添加後 選擇 JavaScriptCore.framework
選中JavaScriptCore.framework後 點擊右下角Add 添加完成
好 建立完成之後我們匯入一下標頭檔
#import <JavaScriptCore/JavaScriptCore.h>
點進去 會看到如下幾個方法
#import "JSContext.h"
#import "JSValue.h"
#import "JSManagedValue.h"
#import "JSVirtualMachine.h"
#import "JSExport.h"
這些方法我們等會再細講
下來我們建立一個UIWebView 用來測試
建立UIWebView
UIWebView *myWebView;
初始化,添加,開啟網址
//初始化webview myWebView=[[UIWebView alloc]initWithFrame:CGRectMake(0, 22, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height-22)]; myWebView.delegate=self; //添加webview到當前viewcontroller的view上 [self.view addSubview:myWebView]; //網址 NSString *[email protected]"https://www.baidu.com"; NSURL *httpUrl=[NSURL URLWithString:httpStr]; NSURLRequest *httpRequest=[NSURLRequest requestWithURL:httpUrl]; [myWebView loadRequest:httpRequest];
運行效果如下
下面我們來實現UIWebView的幾個代理方法
首先我們看下它的代理方法
@protocol UIWebViewDelegate <NSObject>@optional- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;- (void)webViewDidStartLoad:(UIWebView *)webView;- (void)webViewDidFinishLoad:(UIWebView *)webView;- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;@end
每個方法的作用等會在帶裡面做注釋
首先我們添加協議
@interface ViewController ()<UIWebViewDelegate>
實現代理方法
#pragma mark --webViewDelegate-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{ //網頁載入之前會調用此方法 //retrun YES 表示正常載入網頁 返回NO 將停止網頁載入 return YES;}-(void)webViewDidStartLoad:(UIWebView *)webView{ //開始載入網頁調用此方法}-(void)webViewDidFinishLoad:(UIWebView *)webView{ //網頁載入完成調用此方法}-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{ //網頁載入失敗 調用此方法}
每個方法是什麼時候調用都在注釋裡面
下來我們先嘗試用oc調用一下js方法
-(void)webViewDidFinishLoad:(UIWebView *)webView{ //網頁載入完成調用此方法 //首先建立JSContext 對象(此處通過當前webView的鍵擷取到jscontext) JSContext *context=[webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"]; NSString *[email protected]"alert('test js OC')"; //準備執行的js代碼 [context evaluateScript:alertJS];//通過oc方法調用js的alert }
執行效果如下:
好了,我們已經實現了iOS 調用js
js調用iOS 在下節
http://blog.csdn.net/lwjok2007/article/details/47058795
原始碼我們上傳到群空間[TestJSOC.zip]有需要的去下載
蘋果開發群 :414319235 歡迎加入 歡迎討論問題
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
iOS js oc相互調用(JavaScriptCore)