從iOS7開始 蘋果公佈了JavaScriptCore.framework 它使得JS與OC的交互更加方便了。
下面我們就簡單瞭解一下這個框架
首先我導入framework
方法如下
點擊Linked Frameworks and Libraries 的添加後 選擇 JavaScriptCore.framework
選中JavaScriptCore.framework後 點擊右下角Add 添加完成
好 創建完成之後我們導入一下頭文件
點進去 會看到如下幾個方法
#import "JSContext.h"
#import "JSValue.h"
#import "JSManagedValue.h"
#import "JSVirtualMachine.h"
#import "JSExport.h"
這些方法我們等會再細講
下來我們創建一個UIWebView 用來測試
創建UIWebView
初始化,添加,打開網址
//初始化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 *httpStr=@"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方法
執行效果如下:
好了,我們已經實現了iOS 調用js