WKwebView借助于WebViewJavascriptBridge与js交互
程序员文章站
2022-03-11 18:31:04
...
-
设置属性
@property WKWebViewJavascriptBridge* bridge;
-
初始化 WebViewJavascriptBridge
if (_bridge) { return; } //打开输出日志 [WKWebViewJavascriptBridge enableLogging]; _bridge = [WKWebViewJavascriptBridge bridgeForWebView:self.wkWebView]; [_bridge setWebViewDelegate:self]; //请求加载网页,注意:这里h5加载完,会自动执行一个调用oc的方法 [self loadExamplePage:self.wkWebView];
3.注册监听js动作。将js动作在客户端实现
- (void)viewDidLoad {
//监听方法。 js 调用 OC
[self jsJumpToLogin];
}
//跳转到登录 jswv_login
- (void)jsJumpToLogin{
// 只要js那边有调用jswv_login 在 代码块中会自动响应我们写的方法
// 当然方法名俩端一致 。不然监听个什么东西 ??
[_bridge registerHandler:@"jswv_login" handler:^(id data, WVJBResponseCallback responseCallback) {
//注销
[ChildHttpReq Post:ALogout parm:nil showHud:YES sucess:^(NSDictionary *responseObject) {
if ([responseObject[@"result"] isEqual:@200]) {
//延迟一秒
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
//跳转到登录页
LoginViewController *loginVC = [LoginViewController new];
[self.navigationController pushViewController:loginVC animated:NO];
});
}
} failure:^(NSError *error) {
NSLog(@"%@",error);
}];
}];
}
- OC 回调js
// // 主动调用 js方法。让js做动作...
- (void)chooseAll{
[_bridge callHandler:@"wvjs_bottomLeftBtn"];
}
- wk 在用WebViewJavascriptBridge这个框架的时候。 会因为初始化慢的问题,有时候交互有用有时候交互又没用。此时应该叫后台的伙伴。在没获取到的时候。再重新获取即可。。。
推荐阅读
-
Android的WebView与H5前端JS代码交互的实例代码
-
c#两种方式调用google地球,调用COM API以及调用GEPLUGIN 与js交互,加载kml文件,dae文件。将二维高德地图覆盖到到三维谷歌地球表面。
-
JS与OC交互,JS中调用OC方法(获取JSContext的方式)
-
详解 WebView 与 JS 交互传值问题
-
Android中webview与JS交互、互调方法实例详解
-
vue.js与后台数据交互的实例讲解
-
[js]javascript与剪贴板交互
-
c#两种方式调用google地球,调用COM API以及调用GEPLUGIN 与js交互,加载kml文件,dae文件。将二维高德地图覆盖到到三维谷歌地球表面。
-
Winform 通过 WebBrowser 与 JS 交互
-
iOS开发教程之WKWebView与JS的交互