oc調用js方法

從iOS7開始 蘋果公佈了JavaScriptCore.framework 它使得JS與OC的交互更加方便了。

下面我們就簡單瞭解一下這個框架

首先我導入framework

方法如下


點擊Linked Frameworks and Libraries 的添加後 選擇 JavaScriptCore.framework


選中JavaScriptCore.framework後 點擊右下角Add 添加完成

好 創建完成之後我們導入一下頭文件

[objc] view plain copy
#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 *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方法

-(void)webViewDidFinishLoad:(UIWebView *)webView  
{  
    //網頁加載完成調用此方法  
      
    //首先創建JSContext 對象(此處通過當前webView的鍵獲取到jscontext)  
    JSContext *context=[webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];  
    NSString *alertJS=@"alert('test js OC')"; //準備執行的js代碼  
    [context evaluateScript:alertJS];//通過oc方法調用js的alert  
      
}



執行效果如下:




好了,我們已經實現了iOS 調用js

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章