美文网首页
WKWebView 笔记

WKWebView 笔记

作者: 米修斯_ | 来源:发表于2020-01-18 23:19 被阅读0次

WKWebView JS 交互

客户端中加入以下代码 可以监听JS->OC

WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
[configuration.userContentController addScriptMessageHandler:self name:@"abc"];
 //发送的信息仅支持字符串
window.webkit.messageHandlers.abc.postMessage("你好") ;

当在页面中调用 以上JS代码后 在 delegate 中接受到数据

-(void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message {
    if ([message.name isEqualToString:@"abc"]) {
        NSLog(@" %@",message.body);
    }
}
  //移除Handler
    [self.webView.configuration.userContentController removeScriptMessageHandlerForName:@"abc"];

重点
在这里的Controller 退出的时候dealloc ,并不会执行。 WKScriptMessageHandler,会有内存泄漏的Bug,
目前的解决方式 新建一个对象实现上述代理。

@interface WeakMessageHandler : NSObject <WKScriptMessageHandler>

@property (nullable, nonatomic, weak)id <WKScriptMessageHandler> delegate; //重点

-(instancetype)initWithMessageHandler:(id<WKScriptMessageHandler>) delegate ;
@end
-(instancetype)initWithMessageHandler:(id<WKScriptMessageHandler>)delegate {
    if (self = [super init]) {
        _delegate = delegate;
    }
    return self;
}

-(void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message {
    if (self.delegate && [self.delegate respondsToSelector:@selector(userContentController:didReceiveScriptMessage:)]) {
        [self.delegate userContentController:userContentController didReceiveScriptMessage:message];
    }
}

即可解决内存泄漏的问题

OC->JS

  [self.webView evaluateJavaScript:@"方法" completionHandler:nil]

相关文章

  • WKWebView的学习

    WKWebView的学习 重新整理前面的学习笔记WKWebView 原文网址 :http://www.jiansh...

  • iOS OC与JS交互(四)-- WebViewJavascri

    本篇笔记记录WebViewJavascriptBridge在WKWebView中的使用和原理分析 WebViewJ...

  • WKWebView笔记

    准备工作 · 导入框架 WebKit.framework · 导入头文件

  • WKWebView笔记

    前言 iOS8开始,苹果引入了新的web控件WKWebView替代UIWebView,WKWebView属于Web...

  • WKWebView 笔记

    WKWebView JS 交互 客户端中加入以下代码 可以监听JS->OC 当在页面中调用 以上JS代码后 在 d...

  • (转)WKWebView学习笔记

    上一篇整理了下wkwebview的一些属性及API,然后又发现有一个写的比我完整的wkwebview的学习笔记,怕...

  • WKWebView学习笔记

    一、简介 webView是我们日常开发中不可缺少的一个组件,通常我们都是使用UIWebView来实现的,不过大多数...

  • 笔记篇《wkwebview》

    特此推荐多看看这篇文章:https://juejin.im/entry/5880ac602f301e006980d1f5

  • WKWebView学习笔记

    WKWebView WKWebView 是苹果在iOS 8中引入的新组件,用于显示交互式web内容的对象,支持更多...

  • iOS-WKWebView(post请求的一个Bug)

    WKWebView WKWebView使用 WKWebView操作JSWKWebView加载JS WKWebVie...

网友评论

      本文标题:WKWebView 笔记

      本文链接:https://www.haomeiwen.com/subject/wrplzctx.html