博文

目前显示的是 四月, 2017的博文

WKWebview与原生的JS交互(js调用原生)

如果在js端直接使用window.webkit.messageHandlers.postMessage方法进行交互,可以是可以,不过如果js需要和安卓进行js交互的话,就需要写两套方案了。 所以,要实现js“优雅”地调用原生,需要实现3个部分: 1.js的注入脚本准备, 2.WKUserContentController的配置, 3.WKWebview的配置。 1.准备js的注入脚本。 我们要声明一个js对象,然后将交互所需的方法放到这个对象里面。 js脚本文件内容如下(实现了setTitle方法): var jsObject = {}; //声明js交互对象 jsObject.bridge = function(name) { //js交互桥接方法   var args = new Array(arguments.length - 1);   for (var i = 0; i < args.length; i++) {     args[i] = arguments[i + 1];   }   window.webkit.messageHandlers[name].postMessage(args); }; jsObject.setTitle = function(title){ //js实际中需要调用的方法         jsObject.bridge("setTitle",title);     }; 2.配置WKUserContentController: 新建一个WKUwerContentController的子类,然后在里面实现载入UserScript的方法。 -(void)loadScript {     NSString *jsPath = [[NSBundle bundleForClass:self.class] pathForResource:@"bridge" ofType:@"js"]; if (jsPath != nil) { NSString *jsContent = [NSString stri...