老项目不改html代码的情况下将UIWebView改造成WKWebView的经过

最近接手了一个老项目,里面的html页面非常多原生和js交互用的也很多全都是用UIWebView显示的,苹果要求20年12月底前项目中不能再使用UIWebView所以急需马上整改,主要需要改的就是变更原生和h5js的交互方法,我们都知道UIWebView和WK与js交互的代码是不一样的,UIWebView只要原生和h5约定好方法名就可以被调起,但是WK需要在js中如下代码所示才能实现被js调起

window.webkit.messageHandlers.test.postMessage(1);

为了能够在不改动h5页面情况下,js能调起WK原生,我这边做了一下js注入,代码如下

NSString *jsStr = @"test = function(a){return window.webkit.messageHandlers.test.postMessage(a);}";
WKUserScript *jsScript = [[WKUserScript alloc] initWithSource:jsStr injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:YES];

  WKWebViewConfiguration *wkWebViewConfiguration=[[WKWebViewConfiguration alloc] init];

  [wkWebViewConfiguration.userContentController addUserScript:jsScript];

这样就可以让js成功调起原生方法了

posted @ 2020-09-30 16:31  zk1947  阅读(301)  评论(0编辑  收藏  举报