一、前言 近日,有朋友问我关于WKWebView与JS的交互问题,可我之前一直使用的是UIWebView,也不曾做过WKWebView的交互啊!...接下来大家一块学习下WKWebView是怎么实现原生代码和JS交互的。...二、WKWebView 支持更多的HTML5的特性 高达60fps滚动刷新频率与内置手势 与Safari相容的JavaScript引擎 在性能、稳定性方面有很大提升占用内存更少 协议方法及功能都更细致...-> Void) 五、WKWebView与JS的交互使用 首页创建html文件,代码如下: <meta charset...JavaScriptCore 这个库是 Apple 在 iOS 7 之后加入到标准库的,它对 iOS Native 与 JS 做交互调用产生了划时代的影响。
与Swift交互起一个名字:callbackHandler,WKWebView给Swift发消息的时候会用到 // 此句要求实现WKScriptMessageHandler协议 configuration.userContentController.add...WKWebView调用JS: func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!)...JS调用WKWebView: func userContentController(_ userContentController: WKUserContentController, didReceive...与Swift交互起一个名字:callbackHandler,WKWebView给Swift发消息的时候会用到 // 此句要求实现WKScriptMessageHandler协议...override func viewDidLoad() { super.viewDidLoad() title = "WebView与JS
一、WKWebView的使用: 1、初始化 webView初始化:WKPreferences, WKUserContentController -> WKWebViewConfiguration ->... WKWebView 这里添加了三个代理,代理方法会在下面实现。...: 客户下单啦~"); } catch (e) { console.log(e); } } 二、与JS的交互 其实上面的代理实现的已经差不多了...交互了: // MARK: - 加载完成 func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!)...与iOS交互 点击alert APP弹框 <button
看网上关于它的博客也是有许多的了,从各个方面总结一下这个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...框架中的负责网页的渲染与展示的类,相比UIWebView速度更快,占用内存更少,支持更多的HTML特性 I JS调用iOS 使用例子:点击页面图片,调用iOS方法进行图片放大显示 1.1 JS代码: window.webkit.messageHandlers.openImage.postMessage...但只有在整个webView加载完成之后调用此方法才会有响应 2.1 执行JS iOS使用WKWebView的-evaluateJavaScript:completionHandler:方法执行拼接好的JS...see also iOS利用JSExport协议实现与JS的交互 & android 和js的交互 https://blog.csdn.net/z929118967/article/details/77963082...UIProcess进程:主要负责与 WebContent 进行交互,与 APP 在同一进程中,可以进行 WebView 的功能配置,并接收来自 WebContent 进程的各类消息,配合业务代码执行任务的决策
https://blog.csdn.net/u010105969/article/details/53541088 之前已经写过一个篇OC与JS交互的博客了(博客地址:http://blog.csdn.net.../u010105969/article/details/53189934),可当时用来展示网页的控件是UIWebView,而在iOS8之后苹果推出了WKWebView,此控件也能用来显示网页,可与JS的交互却与...如果点击第四个conform按钮会调用方法: // 确认框 - (void)webView:(WKWebView *)webView runJavaScriptConfirmPanelWithMessage...如果点击最后一个input按钮会调用方法: // 输入框 - (void)webView:(WKWebView *)webView runJavaScriptTextInputPanelWithPrompt...注意:在利用UIWebView展示网页的时候我们如果要想与JS进行交互那么我们就得获取JS代码中的方法名,而我们在使用WKWebView的时候就不用了。
上一篇文章介绍了UIWebView 如何通过WebViewJavascriptBridge 来实现JS 与OC 的互相调用,这一篇来介绍一下WKWebView 又是如何通过WebViewJavascriptBridge...来实现JS 与OC 的互相调用的。...WKWebView 下使用WebViewJavascriptBridge来实现JS 与OC 的互相调用,也是通过拦截URL来实现的。...下面开始介绍WKWebView 如何通过WebViewJavascriptBridge 来实现JS 与OC 的互相调用。...执行js 的API 与 UIWebView 有些不同,WKWebView 用的是{-evaluateJavaScript: completionHandler:},这个API 不会立刻返回执行结果,js
WKWebView WKWebView是现代 WebKit API 在 iOS 8 和 OS X Yosemite 应用中的核心部分。...WKWebView与js交互 所谓轻应用,简单的来说就是原生应用集成了html页面入口,还能通过js与native实现交互,例如:通过js调用native封装好的viewController实现扫描与对应反馈功能...与native交互代码> - (void)webView:(WKWebView*)webView decidePolicyForNavigationAction:(WKNavigationAction...fromWebView:webView]; }else{ //forward } decisionHandler(WKNavigationActionPolicyAllow); } 处理js...发起的请求,native截取对应的url,读取与web端定义的协议规则,可进行简单的通讯。
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
在上篇文章中讲述了使用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 互相调用。...这时候就是OC 调用JS 方法的场景。 WKWebView 提供了一个新的方法evaluateJavaScript:completionHandler:,实现OC 调用JS 等场景。
2,WKWebView拥有与Safari中相同的Nitro JavaScript引擎,大大提高了页面JS执行速度;但是UIWebView不支持Nitro JavaScript引擎,所以加载较慢。...5,WKWebView可以和JS直接互调函数,交互更方便;而UIWebView则需要依靠WebViewJavaScriptBridge第三方库来协助处理与JS的交互,实现起来较繁琐。...比如JS与Native的通信、scheme拦截、点击电话号码是否调起拨打电话的弹窗等,都是在该代理方法中处理的。...我们可以通过JSCore或者JSBridge来在native中执行JS代码,并且在JS中去回调Native的相关函数。 现在很火热的跨平台以及热修复技术,都是基于JS与Native通信来实现的。...很多跨平台技术,其核心就是利用了JS与Native的通信技术。 以上。
问题最近用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
NS_DESIGNATED_INITIALIZER; // 已不再使用 - (instancetype)initWithCoder:(NSCoder *)coder NS_UNAVAILABLE; // 与UIWebView...WKUserContentController内容交互控制器 我们要通过JS与webview内容交互,就需要到这个类了,它的所有属性及方法说明如下: // 只读属性,所有添加的WKUserScript都在这里可以获取到...WKUserContentController是用于与JS交互的类,而所注入的JS是WKUserScript对象。...didFailNavigation:(null_unspecified WKNavigation *)navigation withError:(NSError *)error; // 这与用于授权验证的API,与AFN...*)webView NS_AVAILABLE(10_11, 9_0); // 调用JS的alert()方法 - (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage
问题 最近用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
processPool; webview将会从该进程池中获取一个Web Content 进程 在初始化web视图时,将为它从指定的池中创建一个新的Web Content 进程,或者使用该池中的现有进程 与WebView...WKUserContentController对象 @property(nonatomic, strong) WKUserContentController *userContentController; 与WebView...与WebView的进程池关联的进程池通过其configuration来配置。...任何一个与正在加载的网页拥有相同WKSecurityOrigin的URL加载是一个First Party加载。First Party网页可以访问彼此的脚本和数据库资源。...modifiedSince:(NSDate *)date completionHandler:(void (^)(void))completionHandler; WKHTTPCookieStore 管理与特定的
在UIWebView下,可以使用 [[NSURLCache sharedURLCache] removeAllCachedResponses];//清除缓存 WKWebView清除cookies的方法...cookies]) { NSLog(@"%@", cookie); } 参考链接:http://stackoverflow.com/questions/31289838/how-to-delete-wkwebview-cookies
无奈之下,我们只能约定一个JS接口,让游戏开发商实现该接口,具体是通过 canvas getImageData()方法取得图片数据后返回 base64 格式的数据,客户端在需要截图的时候,调用这个JS接口获取...退出的时候,JS刚好执行了window.alert(), alert 框可能弹不出来,completionHandler 最后没有被执行,导致 crash;另一种情况是在 WKWebView 一打开,...下弹 alert 框的 crash,WKWebView 下弹 confirm 框的 crash 的原因与解决方式与 alert 类似。...另一个 crash 发生在 WKWebView 退出前调用: -[WKWebView evaluateJavaScript: completionHandler:] 执行JS代码的情况下。...8.2、goBack API问题 WKWebView 上调用 -[WKWebView goBack], 回退到上一个页面后不会触发window.onload()函数、不会执行JS。
无奈之下,我们只能约定一个JS接口,让游戏开发商实现该接口,具体是通过canvas getImageData()方法取得图片数据后返回base64格式的数据,客户端在需要截图的时候,调用这个JS接口获取...退出的时候,JS刚好执行了window.alert(), alert框可能弹不出来,completionHandler最后没有被执行,导致crash;另一种情况是在WKWebView一打开,JS就执行window.alert...下弹alert框的crash,WKWebView下弹confirm框的crash原因与解决方式与alert类似。...另一个crash发生在WKWebView退出前调用 -[WKWebView evaluateJavaScript:completionHandler:] 执行JS代码的情况下。...8.2、goBack API问题 WKWebView上调用 -[WKWebView goBack], 回退到上一个页面后不会触发window.onload()函数、不会执行JS。
LeeWkWebView 起因 之前lz公众号写个关于UIWebView的JS与App通信的文章,但是最新iOS审核规定需要替换掉UIWebView使用WKWebView才可以过审。...3hhn7sh2so.png] 使用 pod 'LeeWkWebView',:git=>'git@github.com:skeyboy/LeeWkWebView.git' 之前不完善有了简单的介绍,今天就完善一下 为了方便js...[WKWebViewHelper alloc initHanlerNpc:@"iOSApp" frame:UIScreen mainScreen.bounds]; 1 增加Web加载完成时App主动给JS...是我们通过点击button实现了App与JS的通信 (IBAction)manualCallJs:(id)sender { WKActionHandler * tokenHandler = [...啦 我们以加载本的一个HTML为例 NSString *path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"]; WKWebView
WKWebView的使用 前言 最近项目中的UIWebView被替换为了WKWebView,因此来总结一下WKWebView的使用。...示例Demo:WKWebView的使用 本文将从以下几方面介绍WKWebView: 1、WKWebView涉及的一些类 2、WKWebView涉及的代理方法 3、网页内容加载进度条的实现 4、JS...和OC的交互 5、本地HTML文件的实现 一、WKWebView涉及的一些类 WKWebView:网页的渲染与展示 注意: #import //初始化...后,会发现字体小了很多,这应该是WKWebView与html的兼容问题,解决办法是修改原网页,要么我们手动注入JS NSString *jSString = @"var meta = document.createElement...JS方法,设置处理接收JS方法的代理,代理遵守WKScriptMessageHandler,实现捕捉到JS消息的回调方法,详情可以看第一步中对这两个类的介绍。
领取专属 10元无门槛券
手把手带您无忧上云