在上篇文章中讲述了使用UIWebView拦截URL的方式来处理JS与OC交互。 由于UIWebView比较耗内存,性能上不太好,而苹果在iOS 8中推出了WKWebView。...同样的用WKWebView也可以拦截URL,做JS 与OC交互。关于WKWebView与UIWebView的对比,大家请自动百度或者google。...| 内存47M | 内存51M WKWebView 拦截URL WKWebView 与 UIWebView 拦截URL 的处理方式基本一样。...除了代理方法和WKWebView的使用不太一样,关于WKWebView更详尽的讲解和用法,还是自行搜索学习,本文重点还是讲解如何实现JS 与OC 互相调用。...2.拦截URL 使用WKNavigationDelegate中的代理方法,拦截自定义的URL来实现JS调用OC方法。
一、前言 近日,有朋友问我关于WKWebView与JS的交互问题,可我之前一直使用的是UIWebView,也不曾做过WKWebView的交互啊!...接下来大家一块学习下WKWebView是怎么实现原生代码和JS交互的。...三、WKWebView的代理方法 /*!...-> Void) 五、WKWebView与JS的交互使用 首页创建html文件,代码如下: <meta charset...修改节点的内容 let js = "document.getElementsByTagName('h2')[0].innerText = '这是一个iOS写入的方法'"; //将js注入到网页中 6、js
WKWebView调用JS: func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!)...JS调用WKWebView: func userContentController(_ userContentController: WKUserContentController, didReceive...didReceive message: WKScriptMessage) { print(message.body) } } 补充 拦截、并处理 alert() extension...frame: WKFrameInfo, completionHandler: @escaping () -> Void) { // 处理 } } 拦截...WKFrameInfo, completionHandler: @escaping (Bool) -> Void) { // 处理 } } 拦截
WKWebView 适用于iOS8之后的系统 引用 #import 1.OC调用JS NSString *jsmethod = [NSString stringWithFormat...:@"mymethd(\"%@\")",data]; //data(NSDate)为要传给js的数据 [self.wkWebView evaluateJavaScript:jsmethod...completionHandler:^(id _Nullable result, NSError * _Nullable error) { // result js返回值 }];...2.JS调用OC (1)遵循代理 @interface SharecgiteViewController ()...交互,在页面推出的时候,调用 WKUserContentController *controller = self.wkWebView.configuration.userContentController
一、WKWebView的使用: 1、初始化 webView初始化:WKPreferences, WKUserContentController -> WKWebViewConfiguration ->... WKWebView 这里添加了三个代理,代理方法会在下面实现。...decisionHandler(.allow) // .allow or .calcel } // MARK: - 服务器重定向 func webView(_ webView: WKWebView...didReceiveServerRedirectForProvisionalNavigation") } // MARK: - 加载完成 func webView(_ webView: WKWebView...交互了: // MARK: - 加载完成 func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!)
问题 ---- 嵌入H5页面,点击之后拦截链接进行后续操作。...结果使用代理方法拦截不到: public func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction...allow) } 分析点:H5 使用 Windowns.open 打开的url 解决 ---- 遵守WKUIDelegate代理,实现如下方法 public func webView(_ webView: WKWebView...WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView
看网上关于它的博客也是有许多的了,从各个方面总结一下这个WKWebView看网上说它主要是为了和JS做好交互产生的,我们也会相应的尝试一下。就先从它基本的说起!...一:和UIWebView相比它的不同处 1:和JS更好的做交互,也支持H5的一些新特性 2:加载进度条(下面会演示) 3:性能高,加载变得更快更可靠 二:从加载一张网页开始 1:使用这个WKWebView...2.JS端调用alert时所传的数据可以通过message,打印message信息读取出JS端给你的信息。...// JS端调用alert时所传的数据可以通过message,打印message信息读取出JS端给你的信息。...// 在原生得到结果后,需要回调给JS,通过completionHandler 回调给JS // completionHandler 回调的参数和返回值都是空 -(void)webView:(WKWebView
前言 由于目前UIWebView 已经被抛弃了,因此推荐使用WKWebView的WKScriptMessageHandler实现iOS与JS交互 WKWebView是Apple在iOS8推出的Webkit...通过WKWebView的-evaluateJavaScript:completionHandler:方法来实现 WKWebView的-evaluateJavaScript:completionHandler...:方法可以执行JS代码。...但只有在整个webView加载完成之后调用此方法才会有响应 2.1 执行JS iOS使用WKWebView的-evaluateJavaScript:completionHandler:方法执行拼接好的JS...WKWebView在每次加载请求完成后会调用此方法 (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation
2,WKWebView拥有与Safari中相同的Nitro JavaScript引擎,大大提高了页面JS执行速度;但是UIWebView不支持Nitro JavaScript引擎,所以加载较慢。...5,WKWebView可以和JS直接互调函数,交互更方便;而UIWebView则需要依靠WebViewJavaScriptBridge第三方库来协助处理与JS的交互,实现起来较繁琐。...苹果JS字符串,用于OC调用JS方法。 实例方法 - goBack。导航到后退列表的后退项中。 - goForward。导航到后退列表的前进项中。 - reload。重新加载当前页面。...比如JS与Native的通信、scheme拦截、点击电话号码是否调起拨打电话的弹窗等,都是在该代理方法中处理的。...我们可以通过JSCore或者JSBridge来在native中执行JS代码,并且在JS中去回调Native的相关函数。 现在很火热的跨平台以及热修复技术,都是基于JS与Native通信来实现的。
WKWebView API WKWebView的头文件声明: // webview 配置,具体看下面 @property (nonatomic, readonly, copy) WKWebViewConfiguration...:(WKUserScript *)userScript; // 移除所有注入的JS - (void)removeAllUserScripts; // 添加scriptMessageHandler...WKUserContentController是用于与JS交互的类,而所注入的JS是WKUserScript对象。...它的所有属性和方法如下: // JS源代码 @property (nonatomic, readonly, copy) NSString *source; // JS注入时间 @property (...*)webView NS_AVAILABLE(10_11, 9_0); // 调用JS的alert()方法 - (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage
/u010105969/article/details/53189934),可当时用来展示网页的控件是UIWebView,而在iOS8之后苹果推出了WKWebView,此控件也能用来显示网页,可与JS的交互却与...在点击前三个按钮的时候会调用方法: // 警告框 - (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString...如果点击第四个conform按钮会调用方法: // 确认框 - (void)webView:(WKWebView *)webView runJavaScriptConfirmPanelWithMessage...如果点击最后一个input按钮会调用方法: // 输入框 - (void)webView:(WKWebView *)webView runJavaScriptTextInputPanelWithPrompt...注意:在利用UIWebView展示网页的时候我们如果要想与JS进行交互那么我们就得获取JS代码中的方法名,而我们在使用WKWebView的时候就不用了。
问题最近用WKWebView读取PDF文件出现字体异常、电子图章不显示的问题,后来查找很多解决方案,最后决定用PDF.js的方式来实现解决方案参考https://www.jianshu.com/p/ded81b392d4d...demo能接入PDF,但部分字体在真机上还是接入异常,后来使用gulp generic-legacy生成generic-legacy稳定包之后,对Safari进行兼容后,终于能修复字体异常的问题PDF.js.../www.jianshu.com/p/fd5f248a8158https://www.jianshu.com/p/ded81b392d4dhttps://github.com/mozilla/pdf.js
问题 最近用WKWebView读取PDF文件出现字体异常、电子图章不显示的问题,后来查找很多解决方案,最后决定用PDF.js的方式来实现 解决方案 参考https://www.jianshu.com/...能接入PDF,但部分字体在真机上还是接入异常,后来使用 gulp generic-legacy 生成generic-legacy稳定包之后,对Safari进行兼容后,终于能修复字体异常的问题 PDF.js...}]; }); demo地址:https://github.com/freesan44/PDFJSReader 参考: https://github.com/mozilla/pdf.js...www.jianshu.com/p/fd5f248a8158 https://www.jianshu.com/p/ded81b392d4d https://github.com/mozilla/pdf.js
JS调用iOS方法url拦截弹窗拦截(alert、confirm、prompt)JavaScriptCore(只适用于UIWebView)WKScriptMessageHandler(只适用于WKWebView...,iOS8+)Bridge第三方框架(适用于UIWebView和WKWebView)1. url拦截url拦截是在H5请求一个地址后,客户端拦截住这个地址,对地址进行解析处理H5中调用iOS方法代码:拦截弹窗包括:alert、confirm、prompt, 和url拦截类似都在回调方法中处理以WKWebView的alert为例:- (void)webView:(WKWebView *)webView...JSBridgeJS桥接第三方框架(1)第三方框架DSBridge(2)第三方框架WebViewJavascriptiOS调用JS方法1. UIWebView2. WKWebView1. ...拦截url2. 拦截弹窗3. JavaScriptInterface(JSI)4. JSBridge1.
WKWebView WKWebView是现代 WebKit API 在 iOS 8 和 OS X Yosemite 应用中的核心部分。...WKWebView与js交互 所谓轻应用,简单的来说就是原生应用集成了html页面入口,还能通过js与native实现交互,例如:通过js调用native封装好的viewController实现扫描与对应反馈功能...decisionHandler { //允许跳转 decisionHandler(WKNavigationResponsePolicyAllow); return; } 在发送请求之前,决定是否跳转js...fromWebView:webView]; }else{ //forward } decisionHandler(WKNavigationActionPolicyAllow); } 处理js...selfdidReceivedNotificationDictionary:responseDictfromWebView:webView]; } }else{ } } decidePolicyForNavigationAction能读取到由js
WKWebView 下使用WebViewJavascriptBridge来实现JS 与OC 的互相调用,也是通过拦截URL来实现的。...下面开始介绍WKWebView 如何通过WebViewJavascriptBridge 来实现JS 与OC 的互相调用。...与OC互相调用(一)--UIWebView 拦截URL,你就会发现这个方法与loadURL很像。...执行wvjbscheme://__BRIDGE_LOADED__,然后在WKWebView 的navigationDelegate方法中拦截该URL ,然后往HMTL中注入js。...执行js 的API 与 UIWebView 有些不同,WKWebView 用的是{-evaluateJavaScript: completionHandler:},这个API 不会立刻返回执行结果,js
上下文环境调用 JS 函数 1.2 JS 调用 OC 函数 1.2.1 OC 拦截 JS 超链接操作请求 1.2.2 向 JS 中注入 OC 类 1.2.3 使用 JSContext 上下文,JS函数...拦截 JS 超链接请求 2.3.2 OC 接收 JS 发来的消息 3、第三方库实现 OC 与 JS 交互 3.1 `WebViewJavascriptBridge` 库使用 1、UIWebView JS...1.2.1 OC 拦截 JS 超链接操作请求 HTML 文件中,需要调用 OC 方法的标签,添加超链接属性(超链接协议可自定义)。...2.3.1 拦截 JS 超链接请求 HTML 文件中,需要调用 OC 方法的标签,添加超链接属性(超链接协议可自定义)。...: #pragma mark - WKNavigationDelegate // 拦截 JS 代码中的 请求操作 - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction
今天就在这里记录一下WKWebView的基本使用。 Webview的使用,通常包含以下几个部分:浏览器的基本设置,浏览器的各种回调,浏览器中js如何调用原生方法。...调用原生方法 拦截url 此方法的本质是,js会尝试加载某个URL,客户端在加载前拦截这个URL,通过解析这个URL识别它的内容,调用相应的原生方法,并阻上浏览器加载这个URL。...所以我们在decidePolicyForNavigationAction这个方法中进行拦截。...contentController苹果官方提供的js调用原生方法的类。它的使用方法是: ......closeWebView"]) { //做处理 do something //message.body 为此 ScriptMessage 传递的消息内容 } } js
WKWebView主要涉及到以下类或协议,各部分可能互相依赖,文章按照apple文档的划分对每一个模块进行了详细的解释 WKWebView 配置和偏好 WKWebViewConfiguration WKPreferences...处理WebKit无法处理的URL Scheme类型的资源 WKURLSchemeHandler WKURLSchemeTask 页面结构 WKFrameInfo WKSecurityOrigin 内容拦截...一个WKWebView对象显示交互式的web内容,比如在应用程序内的浏览器。...您可以使用WKWebView类来在应用程序中嵌入web内容,通过创建一个WKWebView对象,将其设置为视图,并发送一个请求来加载web内容。...创建一个新的WebView - (WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration
WKUIDelegate WKWebView 网页的UI交互代理,对于 JS 中的 UI 类型操作需要实现对应的方法,例如 window.alert、window.confirm 等操作。...代码 handlesURLScheme:(NSString *)urlScheme: 拦截自定义请求协议,不允许拦截 http,https,ws,wss,ftp takeSnapshotWithConfiguration...进行自定义协议拦截,无法拦截 http、https、ws、wss、ftp 协议。...7.3.7/js/libs/jquery.min.js" > 在 H5 前端所有想要拦截的 Ajax 请求,需要将请求更改为相对或者绝对路径,即可实现拦截 $.ajax({ url...// oc 代码 [WKWebView loadRequest:] // 发生失败会走该回调 // js代码 location.href="http://abcd" // 发生失败会走该回调 当容器开始加载数据
领取专属 10元无门槛券
手把手带您无忧上云