iOS js oc相互調用(JavaScriptCore)

版權聲明:本文為博主原創(chuàng)文章,未經博主允許不得轉載。

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

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

首先我導入framework

方法如下

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

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

好 創(chuàng)建完成之后我們導入一下頭文件

[objc]view plaincopy

#import?

點進去 會看到如下幾個方法

#import"JSContext.h"

#import"JSValue.h"

#import"JSManagedValue.h"

#import"JSVirtualMachine.h"

#import"JSExport.h"

這些方法我們等會再細講

下來我們創(chuàng)建一個UIWebView ?用來測試

創(chuàng)建UIWebView

[objc]view plaincopy

UIWebView*myWebView;

初始化,添加,打開網址

[objc]view plaincopy

//初始化webview

myWebView=[[UIWebViewalloc]initWithFrame:CGRectMake(0,22,?[UIScreenmainScreen].bounds.size.width,?[UIScreenmainScreen].bounds.size.height-22)];

myWebView.delegate=self;

//添加webview到當前viewcontroller的view上

[self.viewaddSubview:myWebView];

//網址

NSString*httpStr=@"https://www.baidu.com";

NSURL*httpUrl=[NSURLURLWithString:httpStr];

NSURLRequest*httpRequest=[NSURLRequestrequestWithURL:httpUrl];

[myWebViewloadRequest:httpRequest];

運行效果如下

下面我們來實現(xiàn)UIWebView的幾個代理方法

首先我們看下它的代理方法

[objc]view plaincopy

@protocolUIWebViewDelegate?

@optional

-?(BOOL)webView:(UIWebView*)webViewshouldStartLoadWithRequest:(NSURLRequest*)requestnavigationType:(UIWebViewNavigationType)navigationType;

-?(void)webViewDidStartLoad:(UIWebView*)webView;

-?(void)webViewDidFinishLoad:(UIWebView*)webView;

-?(void)webView:(UIWebView*)webViewdidFailLoadWithError:(NSError*)error;

@end

每個方法的作用等會在帶里面做注釋

首先我們添加協(xié)議

[objc]view plaincopy

@interfaceViewController?()

實現(xiàn)代理方法

[objc]view plaincopy

#pragma?mark?--webViewDelegate

-(BOOL)webView:(UIWebView*)webViewshouldStartLoadWithRequest:(NSURLRequest*)requestnavigationType:(UIWebViewNavigationType)navigationType

{

//網頁加載之前會調用此方法

//retrun?YES?表示正常加載網頁?返回NO?將停止網頁加載

returnYES;

}

-(void)webViewDidStartLoad:(UIWebView*)webView

{

//開始加載網頁調用此方法

}

-(void)webViewDidFinishLoad:(UIWebView*)webView

{

//網頁加載完成調用此方法

}

-(void)webView:(UIWebView*)webViewdidFailLoadWithError:(NSError*)error

{

//網頁加載失敗?調用此方法

}

每個方法是什么時候調用都在注釋里面

下來我們先嘗試用oc調用一下js方法

[objc]view plaincopy

-(void)webViewDidFinishLoad:(UIWebView*)webView

{

//網頁加載完成調用此方法

//首先創(chuàng)建JSContext?對象(此處通過當前webView的鍵獲取到jscontext)

JSContext*context=[webViewvalueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];

NSString*alertJS=@"alert('test?js?OC')";//準備執(zhí)行的js代碼

[contextevaluateScript:alertJS];//通過oc方法調用js的alert

}

執(zhí)行效果如下:

好了,我們已經實現(xiàn)了iOS調用js

js調用iOS 在下節(jié)

http://blog.csdn.net/lwjok2007/article/details/47058795

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 最近朋友讓做一個webApp和原生的代碼互調,就順便查了一下資料 總結分享一個 從iOS7開始 蘋果公布了Java...
    Ray_win閱讀 1,174評論 0 6
  • 我們講到的iOS調用js下來我們使用js調用iOSjs調用iOS分兩種情況 一,js里面直接調用方法 二,js里面...
    默默的前行閱讀 910評論 0 1
  • 蘋果公布了JavaScriptCore.framework 它使得JS與OC的交互更加方便了。 一、iOS調用js...
    1d5cb7cff98d閱讀 1,209評論 0 0
  • iOS開發(fā)系列--網絡開發(fā) 概覽 大部分應用程序都或多或少會牽扯到網絡開發(fā),例如說新浪微博、微信等,這些應用本身可...
    lichengjin閱讀 4,034評論 2 7
  • 隨著H5技術的興起,在iOS開發(fā)過程中,難免會遇到原生應用需要和H5頁面交互的問題。其中會涉及方法調用及參數傳值等...
    Chris_js閱讀 3,236評論 1 8

友情鏈接更多精彩內容