從(cóng)iOS7開(kāi)始 蘋果公布了(le)JavascriptCore.framework 它使得(de)JS與OC的(de)交互更加方便了(le)>§→。
下(xià)面我們就(jiù)簡單了(le)解一(yī)下₩β€(xià)這(zhè)個(gè)框架
首先我導入framework
方法如(rú)下(xià)

點擊linked frameworks and Libraries 的(♠γ₩de)添加後 選擇 JavascriptCore.framework

選中JavascriptCore.framework後 點擊右下(xià)角Add ®£添加完成
好(hǎo) 創建完成之後我們導入一(yī)下(↓✘≠xià)頭文(wén)件(jiàn)
點進去(qù) 會(huì)看(kàn)到(dào)如(rú)下(xià)幾$₩λ個(gè)方法
#import "JSContext.h&qu✘ ot;
#import "JSValue.h"
#import "JSManagedValue.h"
#import "JSVirtualMachine.h"
#import "JSExport.h"
這(zhè)些(xiē)方法我們等會(huì)再細$™≤↓講
下(xià)來(lái)我們創建一(yī)個(gè)∏¥☆¥UIWebView 用(yòng)來(l∏ו"ái)測試
創建UIWebView
初始化(huà),添加,打開(kāi)網址
-
- myWebView=[[UIWebView alloc]initWithframe:CGRectMake(0, 22, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height-22)];
- myWebView.delegate=self;
-
- [self.view addSubview:myWebView]; &nb$±sp;
-
-
- NSString *httpStr=@"https://www.baidu.com"₽γ↑;;
- NSURL *httpUrl=[NSURL URLWithString:httpStr];  π↕;
- NSURLRequest *httpRequest=[NSURLRe≈✔quest requestWithURL:httpUrl];
- [myWebView loadRequest:httpRequest];
運行(xíng)效果如(rú)下(xià)

下(xià)面我們來(lái)實現(xiàn)UIWε♦ebView的(de)幾個(gè)代理(lǐ)≈∑☆™方法
首先我們看(kàn)下(xià)它的(de)代理(lǐ)方法
- @protocol UIWebViewDelegate&nb♠∞$ sp;
-
- @optional
- - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithReque★£st:(NSURLRequest *)request navigationType:(UIWebViewNavigationTyp♣'≤δe)navigationType;&nbs≠Ωp;
- - (void)webViewDidStartLoad:(UIWebView *)webView;  ™";
- - (void)webViewDidFinishLoad:(UIWebView *)webView;&nbs☆φ≠$p;
- - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;
-
- @end
每個(gè)方法的(de)作(zuò)用αγ(yòng)等會(huì)在帶裡(lǐ)面做(zu♣§$ò)注釋
首先我們添加協議(yì)
- @interface ViewController ¶♣✘;()
實現(xiàn)代理(lǐ)方法
- #pragma mark π¥'--webViewDelegate
- -(BOOL)webView:(UIWebView *)webView shouldStartLoadWithεε♠∏Request:(NSURLRequest *)request navigationType:(UIWebViewNavigatio∞≠" nType)navigationType
- {
- ∏™♦
- &nb★&≥sp;
-
- &nbs↓α↑p;return YES;
- }
-
- -(void)webViewDidStartLoad:(UIWebView *)webView
- {
-
- }
-
- -(void)webViewDidFinishLoad:(UIWebView *)webView
- {
-
- }
-
- -(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
- {
-
- }
每個(gè)方法是(shì)什(shén)麽時(shí)候調用(yòng)都('↕§ dōu)在注釋裡(lǐ)面
下(xià)來(lái)我們先嘗試用(yòn↓ΩΩεg)oc調用(yòng)一(yī)下(xià)js方法
- -(void)webViewDidFinishLoad:(UIWebView *)webView
- {
-
-
- ±φ
- JSContext *context=[webView valueForKeyPath:@"documentView.webView.mainframe.javascriptContext"];
- NSString *alertJS=@"alert('test js OC')"≤ →;
- [cont±÷ext evaluatescript:alertJS];
- &≤ ↓nbsp;
- }
執行(xíng)效果如(rú)下(xià):

好(hǎo)了(le),我們已經實現(xiàn)了(le)iOS Ωφ™調用(yòng)js