转载 iOS js oc相互调用(JavaScriptCore) --iOS调用js
iOS js oc相互調用(JavaScriptCore)
從iOS7開始 蘋果公布了JavaScriptCore.framework 它使得JS與OC的交互更加方便了。
下面我們就簡單了解一下這個框架
首先我導入framework
方法如下
?
點擊Linked Frameworks and Libraries 的添加后 選擇 JavaScriptCore.framework
?
選中JavaScriptCore.framework后 點擊右下角Add 添加完成
好 創建完成之后我們導入一下頭文件
?
[objc]?view plaincopy- #import?<JavaScriptCore/JavaScriptCore.h>??
點進去 會看到如下幾個方法
?
?
?
#import?"JSContext.h"
#import?"JSValue.h"
#import?"JSManagedValue.h"
#import?"JSVirtualMachine.h"
#import?"JSExport.h"
這些方法我們等會再細講
?
下來我們創建一個UIWebView ?用來測試
?
創建UIWebView
?
[objc]?view plaincopy- UIWebView?*myWebView;??
初始化,添加,打開網址
?
?
?
[objc]?view plaincopy- //初始化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的幾個代理方法
首先我們看下它的代理方法
?
[objc]?view plaincopy- @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??
每個方法的作用等會在帶里面做注釋
?
首先我們添加協議
?
[objc]?view plaincopy- @interface?ViewController?()<UIWebViewDelegate>??
實現代理方法
?
?
[objc]?view plaincopy- #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方法
?
[objc]?view plaincopy- -(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
?
js調用iOS 在下節
http://blog.csdn.net/lwjok2007/article/details/47058795
轉載于:https://www.cnblogs.com/shenlaiyaoshi/p/5984747.html
總結
以上是生活随笔為你收集整理的转载 iOS js oc相互调用(JavaScriptCore) --iOS调用js的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AngularJs--过滤器(filte
- 下一篇: 绝地求生现在多少钱