WKWebView

http://www.cnblogs.com/markstray/p/5757264.html

WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
self.userContentController = [[WKUserContentController alloc] init];

[self.userContentController addScriptMessageHandler:self name:@"showName"];//注冊一個name為testClick的js方法
config.userContentController = self.userContentController;
self.wkWebView = [[WKWebView alloc] initWithFrame:CGRectMake(0, 200, 375, 200) configuration:config];
self.wkWebView.UIDelegate = self;
self.wkWebView.navigationDelegate = self;
[self.view addSubview:self.wkWebView];
[self.wkWebView loadRequest:[NSURLRequest requestWithURL:url]];
  • (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message {
    NSLog(@"%@",NSStringFromSelector(_cmd));
    NSLog(@"%@",message.body);

    if ([message.name isEqualToString:@"showMobile"]) {
    [self showMsg:@"我是下面的小紅 手機(jī)號是:18870707070"];
    }

    if ([message.name isEqualToString:@"showName"]) {
    NSString *info = [NSString stringWithFormat:@"你好 %@, 很高興見到你",message.body];
    [self showMsg:info];
    }

    if ([message.name isEqualToString:@"showSendMsg"]) {
    NSArray *array = message.body;
    NSString *info = [NSString stringWithFormat:@"這是我的手機(jī)號: %@, %@ !!",array.firstObject,array.lastObject];
    [self showMsg:info];
    }
    }

// 2. native調(diào)用js

  • (IBAction)btnClick:(UIButton *)sender {
    if (!self.wkWebView.loading) {
    if (sender.tag == 123) {
    [self.wkWebView evaluateJavaScript:@"alertMobile()" completionHandler:^(id _Nullable response, NSError * _Nullable error) {
    //TODO
    NSLog(@"%@ %@",response,error);
    }];
    }

      if (sender.tag == 234) {
          [self.wkWebView evaluateJavaScript:@"alertName('小紅')" completionHandler:nil];
      }
       
      if (sender.tag == 345) {
          [self.wkWebView evaluateJavaScript:@"alertSendMsg('18870707070','周末爬山真是件愉快的事情')" completionHandler:nil];
      }
    

    } else {
    NSLog(@"the view is currently loading content");
    }
    }

JS端:
function clear() {
document.getElementById('mobile').innerHTML = ''
document.getElementById('name').innerHTML = ''
document.getElementById('msg').innerHTML = ''
}

//OC調(diào)用JS的方法列表
function alertMobile() {
//這里已經(jīng)調(diào)用過來了 但是搞不明白為什么alert方法沒有響應(yīng)
//alert('我是上面的小黃 手機(jī)號是:13300001111')
document.getElementById('mobile').innerHTML = '我是上面的小黃 手機(jī)號是:13300001111'
}

function alertName(msg) {
//alert('你好 ' + msg + ', 我也很高興見到你')
document.getElementById('name').innerHTML = '你好 ' + msg + ', 我也很高興見到你'
}

function alertSendMsg(num,msg) {
//window.alert('這是我的手機(jī)號:' + num + ',' + msg + '!!')
document.getElementById('msg').innerHTML = '這是我的手機(jī)號:' + num + ',' + msg + '!!'
}

//JS響應(yīng)方法列表
function btnClick1() {
window.webkit.messageHandlers.showMobile.postMessage(null)
}

function btnClick2() {
window.webkit.messageHandlers.showName.postMessage('xiao黃')
}

function btnClick3() {
window.webkit.messageHandlers.showSendMsg.postMessage(['13300001111', 'Go Climbing This Weekend !!!'])
}

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

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 關(guān)于UIWebView的介紹,相信看過上文的小伙伴們,已經(jīng)大概清楚了吧,如果有問題,歡迎提問。 本文是本系列...
    CoderLF閱讀 9,307評論 2 12
  • 前言 上一篇專門講解了WKWebView相關(guān)的所有類、代理的所有API。前篇文章地址:http://blog.cs...
    iwolfox閱讀 1,234評論 1 1
  • 一、WKWebView Framework WKWebView的14個類與3個協(xié)議: WKBackForwardL...
    Jasmine_醬閱讀 1,151評論 3 0
  • 耐心,通過笑來引導(dǎo)的深入思考,讓我重新認(rèn)識了耐心,之前原來自己一直掉進(jìn)了坑里被困住而不自知。 平時,總能忍受別人的...
    隨意咖啡閱讀 298評論 0 0
  • 愛情來的太快就像龍卷風(fēng) 所以才有了等風(fēng)也等你嗎 那么你等的是誰誰又知道 也許你滿心歡喜 也許你滿懷憧憬 那么誰又是...
    別說話看書閱讀 285評論 0 0

友情鏈接更多精彩內(nèi)容