一、前言 近日,有朋友问我关于WKWebView与JS的交互问题,可我之前一直使用的是UIWebView,也不曾做过WKWebView的交互啊!...接下来大家一块学习下WKWebView是怎么实现原生代码和JS交互的。...可获取加载进度等。...-> Void) 五、WKWebView与JS的交互使用 首页创建html文件,代码如下: <meta charset...) })) self.present(alertViewController, animated: true, completion: nil) } 4、获取网页中节点的数据 //网页加载完成
由于WKWebView做了安全保护,不能够直接loadRequest一个本地文件,所以iOS9之后需要使用loadFileURL方法....NSString stringWithFormat:@"%@/%@", [paths objectAtIndex:0],@"Test.html"]; readAccessToURL指定webKit可加载的目录或者文件
发送消息给Swift") } 实现两个协议 WKNavigationDelegate:判断页面加载完成...,只有在页面加载完成后才能在实现 Swift 调用 JS。...WKWebView调用JS: func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!)...JS调用WKWebView: func userContentController(_ userContentController: WKUserContentController, didReceive...js文件 let filePath = Bundle.main.path(forResource: path, ofType: "js") // js文件内容 var script
iOS 9.0以上直接设置WKNavigationDelegate代理 func webView(_ webView: WKWebView, didReceive challenge: URLAuthenticationChallenge...completionHandler(.useCredential, cred) } 引用一下 self.wk.navigationDelegate = self 搞定,成功加载证书错误的站点
问题近期有个需求,需要在WKWebView加载PDF中,基于安全的理由,屏蔽【复制、选择全部】等功能弹窗解决方案捕捉长按手势后进行屏蔽,问题是,原来手势是放在view的subview中,导致一直屏蔽view...的长按手势没法生效// 页面加载完成之后调用- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation
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加载PDF中,基于安全的理由,屏蔽【复制、选择全部】等功能弹窗 解决方案 捕捉长按手势后进行屏蔽,问题是,原来手势是放在view的subview中,导致一直屏蔽...view的长按手势没法生效 // 页面加载完成之后调用 - (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)
WKWebView 这里添加了三个代理,代理方法会在下面实现。...{ print("加载完成: didFinish") self.title = webView.title } // MARK: - 加载失败 func webView(_...{ print("即将完成: didCommit") } // MARK: - 加载错误 func webView(_ webView: WKWebView, didFailProvisionalNavigation...交互了: // MARK: - 加载完成 func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!)...{ print("加载完成: didFinish") // 调用js方法(把标题h1设置成红色) webView.evaluateJavaScript("changeHead()
看网上关于它的博客也是有许多的了,从各个方面总结一下这个WKWebView看网上说它主要是为了和JS做好交互产生的,我们也会相应的尝试一下。就先从它基本的说起!...一:和UIWebView相比它的不同处 1:和JS更好的做交互,也支持H5的一些新特性 2:加载进度条(下面会演示) 3:性能高,加载变得更快更可靠 二:从加载一张网页开始 1:使用这个WKWebView...准备的) 3:加载百度试一下 WKWebView * webviwe = [[WKWebView alloc]initWithFrame:self.view.bounds]; [webviwe loadRequest...:(WKNavigation *)navigation { NSLog(@"页面开始加载"); } // 加载内容 -(void)webView:(WKWebView *)webView...// 在原生得到结果后,需要回调给JS,通过completionHandler 回调给JS // completionHandler 回调的参数和返回值都是空 -(void)webView:(WKWebView
前言 由于目前UIWebView 已经被抛弃了,因此推荐使用WKWebView的WKScriptMessageHandler实现iOS与JS交互 WKWebView是Apple在iOS8推出的Webkit...但只有在整个webView加载完成之后调用此方法才会有响应 2.1 执行JS iOS使用WKWebView的-evaluateJavaScript:completionHandler:方法执行拼接好的JS...+ params; } 2.2 获取网页title 获取网页title: 在加载请求完成才执行 //!...WKWebView在每次加载请求完成后会调用此方法 (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation...loadHTMLString4WkWebView源码 #pragma mark - ******** 加载本地HTML //NSString * const k_localHtml4csdn = @"csdn21
基于Swift 3 、 Xcode 8 、 iOS 10 下的WKWebView的使用。 首先是WKWebView的基本用法: var wk:WKWebView!...WKWebViewConfiguration() theConfiguration.userContentController = WKUserContentController() // 通过js...//视图已经加载完后执行 override func viewDidAppear(_ animated: Bool){ super.viewDidAppear(animated)...不过UIWebView可以直接实现JS中alert实现,而前者对JS里的alert事件重新封装了,必须实现WKUIDelegate协议: //把这两个方法加到代码里,配合之前的 self.wk.uiDelegate...关于WKWebView中Html5图片上传,下一篇随笔我会说一下。
在iOS中,加载网页目前有两种控件:UIWebView和WKWebView。...2,WKWebView拥有与Safari中相同的Nitro JavaScript引擎,大大提高了页面JS执行速度;但是UIWebView不支持Nitro JavaScript引擎,所以加载较慢。...5,WKWebView可以和JS直接互调函数,交互更方便;而UIWebView则需要依靠WebViewJavaScriptBridge第三方库来协助处理与JS的交互,实现起来较繁琐。...苹果JS字符串,用于OC调用JS方法。 实例方法 - goBack。导航到后退列表的后退项中。 - goForward。导航到后退列表的前进项中。 - reload。重新加载当前页面。...我们可以通过JSCore或者JSBridge来在native中执行JS代码,并且在JS中去回调Native的相关函数。 现在很火热的跨平台以及热修复技术,都是基于JS与Native通信来实现的。
WKWebView API WKWebView的头文件声明: // webview 配置,具体看下面 @property (nonatomic, readonly, copy) WKWebViewConfiguration...WKUserContentController是用于与JS交互的类,而所注入的JS是WKUserScript对象。...它的所有属性和方法如下: // JS源代码 @property (nonatomic, readonly, copy) NSString *source; // JS注入时间 @property (...WKUserScriptInjectionTimeAtDocumentStart, WKUserScriptInjectionTimeAtDocumentEnd } NS_ENUM_AVAILABLE(10_10, 8_0); 它是一个枚举类型,只有在文档开始加载时注入和加载结束时注入...*)webView NS_AVAILABLE(10_11, 9_0); // 调用JS的alert()方法 - (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage
问题最近用WKWebView读取PDF文件出现字体异常、电子图章不显示的问题,后来查找很多解决方案,最后决定用PDF.js的方式来实现解决方案参考https://www.jianshu.com/p/ded81b392d4d...demo能接入PDF,但部分字体在真机上还是接入异常,后来使用gulp generic-legacy生成generic-legacy稳定包之后,对Safari进行兼容后,终于能修复字体异常的问题PDF.js...[NSURLRequest requestWithURL:[NSURL URLWithString:urlStr]]; [self loadRequest:request];bytes方式动态加载读取...}]; });demo地址:https://github.com/freesan44/PDFJSReader读取本地PDF文件的方式有两个,一个是初始化接入参数,一个是通过bytes方式动态加载读取初始化接入参数.../www.jianshu.com/p/fd5f248a8158https://www.jianshu.com/p/ded81b392d4dhttps://github.com/mozilla/pdf.js
/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/...能接入PDF,但部分字体在真机上还是接入异常,后来使用 gulp generic-legacy 生成generic-legacy稳定包之后,对Safari进行兼容后,终于能修复字体异常的问题 PDF.js...important; /* move doc up into empty bar space */ } 读取本地PDF文件的方式有两个,一个是初始化接入参数,一个是通过bytes方式动态加载读取 初始化接入参数...NSURLRequest requestWithURL:[NSURL URLWithString:urlStr]]; [self loadRequest:request]; bytes方式动态加载读取...viwerPathURL.URLByDeletingLastPathComponent; [self loadFileURL:viwerPathURL allowingReadAccessToURL:dir]; //动态加载的写法
Uni-App 打包发布的H5包直接放到APP中加载可以用于提升加载速度,一般有两种方式: 直接把包放到 iOS 项目中加载 (多用于开发阶段测试) 从后台服务器预下载到文件沙盒内加载 (可以减少APP...文件中的 h5配置的运行的基础路径为:./ 修改配置 发行为H5 H5发行 二、iOS项目内直接加载包内 Uni-App 将整个Uni-App...包以引用(蓝色文件夹)的方式加入项目 引入Uni-App 加载 uni-app - (void)viewDidLoad { [super viewDidLoad...Uni-App 基本逻辑和加载本地一致,但是必须使用 relativeToUrl 方法加载,首先确认自己缓存的目录,然后给路径拼接file://协议头: - (void)viewDidLoad {....问题导致无法加载可以按如下设置,使WKWebView允许跨域: [self.webView.configuration.preferences setValue:@YES forKey:@"allowFileAccessFromFileURLs
WKWebView WKWebView是现代 WebKit API 在 iOS 8 和 OS X Yosemite 应用中的核心部分。...WKWebView与js交互 所谓轻应用,简单的来说就是原生应用集成了html页面入口,还能通过js与native实现交互,例如:通过js调用native封装好的viewController实现扫描与对应反馈功能... #pragma mark - WKNavigationDelegate 页面开始加载时调用...:(WKNavigation*)navigation { NSLog(@"%s",__FUNCTION__); } 页面加载完成之后调用 - (void)webView:(WKWebView...*)webView didFinishNavigation:(WKNavigation*)navigation { NSLog(@"%s",__FUNCTION__); } 加载失败时调用
上一篇文章介绍了UIWebView 如何通过WebViewJavascriptBridge 来实现JS 与OC 的互相调用,这一篇来介绍一下WKWebView 又是如何通过WebViewJavascriptBridge...WKWebView 下使用WebViewJavascriptBridge来实现JS 与OC 的互相调用,也是通过拦截URL来实现的。...下面开始介绍WKWebView 如何通过WebViewJavascriptBridge 来实现JS 与OC 的互相调用。...执行wvjbscheme://__BRIDGE_LOADED__,然后在WKWebView 的navigationDelegate方法中拦截该URL ,然后往HMTL中注入js。...执行js 的API 与 UIWebView 有些不同,WKWebView 用的是{-evaluateJavaScript: completionHandler:},这个API 不会立刻返回执行结果,js
您可以使用WKWebView类来在应用程序中嵌入web内容,通过创建一个WKWebView对象,将其设置为视图,并发送一个请求来加载web内容。...使用 initWithFrame:configuration: 方法来创建WKWebView对象; 使用 loadHTMLString:baseURL: 方法来加载本地HTML文件; 使用 loadRequest...; 当WevView的内容开始加载时触发 - (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation...:(NSError *)error; 当前页面加载完成后触发 - (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation...决定是否允许或者取消一次页面加载请求 - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction
领取专属 10元无门槛券
手把手带您无忧上云