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:@"我是下面的小红 手机号是: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:@"这是我的手机号: %@, %@ !!",array.firstObject,array.lastObject];
    [self showMsg:info];
    }
    }

// 2. native调用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调用JS的方法列表
function alertMobile() {
//这里已经调用过来了 但是搞不明白为什么alert方法没有响应
//alert('我是上面的小黄 手机号是:13300001111')
document.getElementById('mobile').innerHTML = '我是上面的小黄 手机号是:13300001111'
}

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

function alertSendMsg(num,msg) {
//window.alert('这是我的手机号:' + num + ',' + msg + '!!')
document.getElementById('msg').innerHTML = '这是我的手机号:' + num + ',' + msg + '!!'
}

//JS响应方法列表
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 !!!'])
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前言 关于UIWebView的介绍,相信看过上文的小伙伴们,已经大概清楚了吧,如果有问题,欢迎提问。 本文是本系列...
    CoderLF阅读 9,269评论 2 12
  • 前言 上一篇专门讲解了WKWebView相关的所有类、代理的所有API。前篇文章地址:http://blog.cs...
    iwolfox阅读 1,233评论 1 1
  • 一、WKWebView Framework WKWebView的14个类与3个协议: WKBackForwardL...
    Jasmine_酱阅读 1,150评论 3 0
  • 耐心,通过笑来引导的深入思考,让我重新认识了耐心,之前原来自己一直掉进了坑里被困住而不自知。 平时,总能忍受别人的...
    随意咖啡阅读 294评论 0 0
  • 爱情来的太快就像龙卷风 所以才有了等风也等你吗 那么你等的是谁谁又知道 也许你满心欢喜 也许你满怀憧憬 那么谁又是...
    别说话看书阅读 280评论 0 0

友情链接更多精彩内容