日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

转载 iOS js oc相互调用(JavaScriptCore) --iOS调用js

發布時間:2023/11/27 生活经验 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 转载 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
  1. #import?<JavaScriptCore/JavaScriptCore.h>??

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

?

?

?

#import?"JSContext.h"

#import?"JSValue.h"

#import?"JSManagedValue.h"

#import?"JSVirtualMachine.h"

#import?"JSExport.h"


這些方法我們等會再細講

?

下來我們創建一個UIWebView ?用來測試

?

創建UIWebView

?

[objc]?view plaincopy
  1. UIWebView?*myWebView;??

初始化,添加,打開網址

?

?

?

[objc]?view plaincopy
  1. //初始化webview??
  2. myWebView=[[UIWebView?alloc]initWithFrame:CGRectMake(0,?22,?[UIScreen?mainScreen].bounds.size.width,?[UIScreen?mainScreen].bounds.size.height-22)];??
  3. myWebView.delegate=self;??
  4. //添加webview到當前viewcontroller的view上??
  5. [self.view?addSubview:myWebView];??
  6. ??
  7. //網址??
  8. NSString?*httpStr=@"https://www.baidu.com";??
  9. NSURL?*httpUrl=[NSURL?URLWithString:httpStr];??
  10. NSURLRequest?*httpRequest=[NSURLRequest?requestWithURL:httpUrl];??
  11. [myWebView?loadRequest:httpRequest];??


?

?

?

運行效果如下

?

?

下面我們來實現UIWebView的幾個代理方法

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

?

[objc]?view plaincopy
  1. @protocol?UIWebViewDelegate?<NSObject>??
  2. ??
  3. @optional??
  4. -?(BOOL)webView:(UIWebView?*)webView?shouldStartLoadWithRequest:(NSURLRequest?*)request?navigationType:(UIWebViewNavigationType)navigationType;??
  5. -?(void)webViewDidStartLoad:(UIWebView?*)webView;??
  6. -?(void)webViewDidFinishLoad:(UIWebView?*)webView;??
  7. -?(void)webView:(UIWebView?*)webView?didFailLoadWithError:(NSError?*)error;??
  8. ??
  9. @end??

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

?

首先我們添加協議

?

[objc]?view plaincopy
  1. @interface?ViewController?()<UIWebViewDelegate>??

實現代理方法

?

?

[objc]?view plaincopy
  1. #pragma?mark?--webViewDelegate??
  2. -(BOOL)webView:(UIWebView?*)webView?shouldStartLoadWithRequest:(NSURLRequest?*)request?navigationType:(UIWebViewNavigationType)navigationType??
  3. {??
  4. ????//網頁加載之前會調用此方法??
  5. ??????
  6. ????//retrun?YES?表示正常加載網頁?返回NO?將停止網頁加載??
  7. ????return?YES;??
  8. }??
  9. ??
  10. -(void)webViewDidStartLoad:(UIWebView?*)webView??
  11. {??
  12. ????//開始加載網頁調用此方法??
  13. }??
  14. ??
  15. -(void)webViewDidFinishLoad:(UIWebView?*)webView??
  16. {??
  17. ????//網頁加載完成調用此方法??
  18. }??
  19. ??
  20. -(void)webView:(UIWebView?*)webView?didFailLoadWithError:(NSError?*)error??
  21. {??
  22. ????//網頁加載失敗?調用此方法??
  23. }??


?

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

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

?

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

執行效果如下:

?

?

?

?

好了,我們已經實現了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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。