同样的脚本在 iOS 11.3 和ios 11 转换出来的代码不一样
OC 方法 -(void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler { NSURL *url = navigationAction.request.URL; if ([url.scheme isEqualToString:@"weixin"] || [url.scheme isEqualToString:@"alipay"]) { if ( [[UIApplication sharedApplication] canOpenURL:url]) { if (@available(iOS 10.0, *)) { [[UIApplication sharedApplication] openURL:url options:@{UIApplicationOpenURLOptionUniversalLinksOnly: @NO} completionHandler:nil]; } else { [[UIApplication sharedApplication] openURL:url]; } decisionHandler(WKNavigationActionPolicyCancel); return; } } decisionHandler(WKNavigationActionPolicyAllow); }
脚本如下 defineClass("LYWebViewController", { webView_decidePolicyForNavigationAction_decisionHandler: function (webView, navigationAction,decisionHandler) { var url = navigationAction.request().URL(); if (url.scheme().isEqualToString("weixin") || url.scheme().isEqualToString("alipay")) { if (UIApplication.sharedApplication().canOpenURL(url)) { if (UIDevice.currentDevice().systemVersion().floatValue() >= 10) { UIApplication.sharedApplication().openURL_options_completionHandler(url, { UIApplicationOpenURLOptionUniversalLinksOnly: NO }, null); } else { UIApplication.sharedApplication().openURL(url); } decisionHandler(0); return; } } decisionHandler(1); } }, {});
ios 11 正常执行,ios 11.3 脚本报错,说decisionHandler不是函数,是个object
我也遇到了相同的问题 请问解决了吗
试试
if (typeof decisionHandler == 'function') {
decisionHandler(0);
}
if (typeof decisionHandler == 'function') {
decisionHandler(1);
}