1、WKWebView与js交互
主要有两方面:1、js执行OC代码 2、oc调取写好的js代码
js调用OC:
js是不能执行oc代码的,但是可以变相的执行,js可以将要执行的操作封装到网络请求里面,然后oc拦截这个请求,获取url里面的字符串解析即可,这里用到的代理协议。
主要原理:通过 UIWebVIew 的代理方法截取 web 前端的跳转请求,通过识别与 web 前端约定好的自定义协议头来判断本次请求是否为 JS 调用 Native 的请求,来调用对应的 Native 方法。
1 | UIWebview |
OC调用js:
这里用到UIwebview的一个方法。示例代码:获取网页title:
1
2
3
4
5
6
7
8
9//返回值为 JS 执行结果,如果 JS 执行失败则返回 nil,如果 JS 执行没有返回值,则返回值为空字符串
- (void)webViewDidFinishLoad:(UIWebView*)webView
{
NSString* str = [self.webView stringByEvaluatingJavaScriptFromString:@"pageDidLoad()"];
NSLog(@"%@", str);
// 获取网页的title
NSString *title = [self.webView stringByEvaluatingJavaScriptFromString:@"document.title"];
}
1 | pragma mark-----WKWebView WKNavigationDelegate ----- |
js检查是否安装QQ&&微信
1 | // 创建并配置 WKWebView 的相关参数 |
滑动白屏,停止后才渲染页面问题?
https://stackoverflow.com/questions/39549103/wkwebview-not-rendering-correctly-in-ios-10
1 | WKUserContentController:为JS提供了一个发送消息的通道并且可以向页面注入JS的类,WKUserContentController对象可以添加多个scriptMessageHandler; |
1 | <script> |
主题 : wkwebview怎么注入一个js对象,让h5那边可以轮询检测到
WKWebView evaluate JavaScript return value
WKWebView
https://github.com/My-Old-Driver/WKWebView
https://github.com/devedbox/AXWebViewController
https://github.com/li6185377/IMYWebView
https://github.com/giveMeHug/SDWebView
https://github.com/LSure/SureWebViewController
https://github.com/dlwj15/wkwebview
https://github.com/huos3203/WKWebView-JS
基于WKWebView和UIWebView实现的仿微信WebView功能的页面加载库
https://github.com/DoTalkLily/LYWebViewController
https://github.com/JixinZhang/WKWebProgressViewDemo
https://github.com/hdq135/JsWebView
jsbridge 接口对象和webview对象交互用的工具。 JsfFromOCClass 把oc代码转化为js代码,只转化以“js_”开头的代码 JsWebView 配置webview注入js代码,并处理js调用原生接口
ios android 共用appInterface.jsCallApp方法,无需多平台区别
wkwebview
https://github.com/Xcoder1011/WebView-JS
https://github.com/giveMeHug/SDWebView
https://github.com/zengweizhen/WKWebView
https://github.com/hongruqi/WTWebView
http://iliunian.cn/14684585476236.html
http://www.cnblogs.com/coolwxb/p/6125920.html
JS与OC互相调用的一百种方法(包括WKWebView和UIWebView)
https://www.jianshu.com/p/39401c9e5ea3
OC与JS代码交互原理(混合开发,包含UIWebView、WKWebView)
JS与原生OC互相调用的Demo
https://stackoverflow.com/questions/9473582/ios-javascript-bridge