欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

如何使用WKWebView、WebView和JS實(shí)現(xiàn)交互-創(chuàng)新互聯(lián)

這篇文章主要為大家展示了“如何使用WKWebView、WebView和JS實(shí)現(xiàn)交互”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“如何使用WKWebView、WebView和JS實(shí)現(xiàn)交互”這篇文章吧。

創(chuàng)新互聯(lián)建站專注于巴馬企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,成都商城網(wǎng)站開發(fā)。巴馬網(wǎng)站建設(shè)公司,為巴馬等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)

由于Xcode8發(fā)布之后,編譯器開始不支持iOS 7了,這樣我們的app也改為最低支持iOS 8.0,既然需要與web交互,那自然也就選擇使用了 iOS 8.0之后 才推出的新控件 WKWebView.

相比與 UIWebView, WKWebView 存在很多優(yōu)勢(shì):

  • 支持更多的HTML5的特性

  • 高達(dá)60fps滾動(dòng)刷新頻率與內(nèi)置手勢(shì)

  • 與Safari相容的JavaScript引擎

  • 在性能、穩(wěn)定性方面有很大提升占用內(nèi)存更少 協(xié)議方法及功能都更細(xì)致

  • 可獲取加載進(jìn)度等。

UIWebView與JS的交互方式

一,OC調(diào)用JS

直接調(diào)用蘋果提供的API

- (nullable NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;

使用方式:

OC部分:

[self.webView stringByEvaluatingJavaScriptFromString:@"add(1,2)"];

JS部分:

function add(a,b) {
 return a+b;
}

二,JS調(diào)用OC

OC處理JS的時(shí)機(jī)在UIWebView的代理方法內(nèi)

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;

使用方式:

JS部分:

function btnClick1() {
 location.href = "jsCallBack://method_?param1&param2"
}

OC部分:

NSString *schem = webView.request.URL.scheme;
 if ([schem containsString:@"jsCallBack://"]) {
 //action...
 return NO;
 }

WKWebView與JS的交互方式

一,OC調(diào)用JS

調(diào)用蘋果提供的API

- (void)evaluateJavaScript:(NSString *)javaScriptString completionHandler:(void (^ _Nullable)(_Nullable id, NSError * _Nullable error))completionHandler;

使用方式:

OC部分:

[self.wkWebView evaluateJavaScript:@"playSount()" completionHandler:nil];

JS部分:

function playSount() {
 //playSount...
}

二,JS調(diào)用OC

OC部分:

這種使用方式比較麻煩一些

1.在創(chuàng)建wkWebView時(shí),需要將被js調(diào)用的方法注冊(cè)進(jìn)去

//創(chuàng)建WKWebViewConfiguration文件
 WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
 config.preferences.minimumFontSize = 10.f;
 [config.userContentController addScriptMessageHandler:self name:@"playSound"];
//創(chuàng)建WKWebView類
 WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.bounds configuration:config];

2.在WKScriptMessageHandler代理方法中監(jiān)聽js的調(diào)用

#pragma mark - WKScriptMessageHandler
- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message {
 
 if ([message.name isEqualToString:@"playSound"]) {
  [self playSound];
 }
}

JS部分:

//JS響應(yīng)事件
function btnClick() { window.webkit.messageHandlers.playSound.postMessage(null);
}

利用JavaScriptCore庫,WebView與JS的交互

一,OC調(diào)用JS

self.jsContent = [[JSContext alloc] init];
 
NSString *js = @"function add(a,b) {return a + b}";
[self.jsContent evaluateScript:js];
JSValue *jsValue = [self.jsContent[@"add"] callWithArguments:@[@2,@3]];

二,JS調(diào)用OC

self.jsContent = [[JSContext alloc] init];
self.jsContent[@"add"] = ^(int a, int b){
 NSLog(@"a+b = %d",a+b);
};
 
[self.jsContent evaluateScript:@"add(10,20)"];

三,JS直接訪問OC對(duì)象方法與屬性

1.首先定義一個(gè)協(xié)議,這個(gè)協(xié)議遵守JSExport協(xié)議

@protocol JSExportTest <JSExport>
@property (nonatomic, assign) NSInteger sum;
JSExportAs(add, - (NSInteger)add:(int)a b:(int)b);
 
@end

其中JSExportAs()是系統(tǒng)提供的宏,用來聲明在JS環(huán)境中方法add與OC環(huán)境中方法- (NSInteger)add:(int)a b:(int)b對(duì)應(yīng)。

2.創(chuàng)建一類,遵守JSExportTest協(xié)議,并實(shí)現(xiàn)它什么的方法與屬性

@interface JSProtolObj : NSObject <JSExportTest>
@end
@implementation JSProtolObj
@synthesize sum = _sum;
- (NSInteger)add:(int)a b:(int)b {
 return a+b;
}
 
- (void)setSum:(NSInteger)sum {
 _sum = sum;
}
@end

3.使用方式:

self.jsContent = [[JSContext alloc] init];
self.jsContent.exceptionHandler = ^(JSContext *context, JSValue *exception) {
 [JSContext currentContext].exception = exception;
 NSLog(@"exception:%@",exception);
};
 
self.jsContent[@"OCobj"] = self.jsProtolObj;
[self.jsContent evaluateScript:@"OCobj.sum = OCobj.add(10,20)"];

這三種使用方式可以根據(jù)實(shí)際情況進(jìn)行適當(dāng)使用

以上是“如何使用WKWebView、WebView和JS實(shí)現(xiàn)交互”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站aaarwkj.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

分享題目:如何使用WKWebView、WebView和JS實(shí)現(xiàn)交互-創(chuàng)新互聯(lián)
當(dāng)前路徑:http://aaarwkj.com/article42/jsghc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、全網(wǎng)營(yíng)銷推廣、企業(yè)建站云服務(wù)器、自適應(yīng)網(wǎng)站、微信公眾號(hào)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
丝袜在线美腿视频网站| 自拍一区日韩二区欧美三区| 国产美女口爆吞精久久| 久久综合伊人欧美精品| 精品欧美一区二区精品| 国产精品国产三级国产专播| 亚洲国产精品中文字幕一区久久| 日本黄色小网站在线播放| 人妻一少妇一区二区三区| 日本在线视频精品一区| 国产午夜草莓视频在线观看| 日韩传媒在线观看视频| 欧美口爆吞精在线播放| 91日本在线免费观看视频| 日韩亚洲欧美国产另类| 四虎成人免费永久视频| 日本午夜福利久久久| 日本中文字幕免费专区| 国产精品熟女亚洲av| 亚洲欧美日韩精品在线观看| 欧美精品国产一区二区免费| 亚洲码与欧洲码一二三| 新午夜福利片在线观看| 中文字幕久久一区二区三区| 十八禁一区二区在线观看| 亚洲欧美日韩一区91| 免费国产中文字幕黄网站| 农村精品少妇久久久久久| 日韩综合欧美激情另类| 日韩精品欧美视频久久| 美女网站色在线免费观看午夜精品| 永久黄区观看在线网址| 亚洲视频免费在线一区| 丁香六月综合激情啪啪啪| 精品日韩av一区二区三区| 亚洲综合av一区二区三区四区| 日本国产美女精品一区二区| 国产剧情av在线资源| 精品人妻av中文字幕乱| 四季一区二区三区av| 日韩精品一区三区二区|