iOS js oc相互調用(JavaScriptCore)

來源:互聯網
上載者:User

標籤: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)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.