跳至主要内容

博文

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

iOS webview js交互总结

iOS web控件有两种,一种是UIWebView,一种是WKWebView UIWebView UIWebView 拦截函数为自定义函数 UIWebView js交互,如果交互函数只有函数名称,即中间没有.号的话,拦截很容易,如果有.号的话,要拦截,必须使用第三方组件 UIWebView+TS_JavaScriptContext ,然后在 webViewDidFinishLoad: 里面执行以下函数(demo中的函数是thirdPartyApp. CloseWebView()) self.context = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"]; self.context[@"thirdPartyApp"] = self; 然后再在web控制器页面添加函数就可以完成拦截过程了 - (void)CloseWebView{ } ## WKWebView WKWebView 拦截的js方法和UIWebView不一样,只能拦截window.webkit.messageHandlers. mydemo .postMessage函数,拦截名称为灰色部分。 WKWebView 有两种方案 方案1: 修改web,然后添加兼容WKWebView的代码,本地修改useragent,添加webConfiguration.applicationNameForUserAgent = @"demo";后面为添加的区分代码 交互代码为 window.webkit.messageHandlers.mydemo.postMessage(''); 方案2:初始化代码如下,添加的js交互代码 拦截核心代码如下 WKUserContentController *userController = [[WKUserContentController alloc]init]; NSString *javaScriptSource = @"var thirdPartyApp = {};thirdPartyApp.function(){window.webkit.messageHandlers.m...