上一篇文章介绍了UIWebView 如何通过WebViewJavascriptBridge 来实现JS 与OC 的互相调用,这一篇来介绍一下WKWebView 又是如何通过WebViewJavascriptBridge...来实现JS 与OC 的互相调用的。...WKWebView 下使用WebViewJavascriptBridge来实现JS 与OC 的互相调用,也是通过拦截URL来实现的。...下面开始介绍WKWebView 如何通过WebViewJavascriptBridge 来实现JS 与OC 的互相调用。...第六步,Native 调用 JS 功能。 Native 调用js 功能与 js 调用Native 的原理和流程一样。 1、现在js 中注册,Native 要调用的功能。
同样的用WKWebView也可以拦截URL,做JS 与OC交互。关于WKWebView与UIWebView的对比,大家请自动百度或者google。...除了代理方法和WKWebView的使用不太一样,关于WKWebView更详尽的讲解和用法,还是自行搜索学习,本文重点还是讲解如何实现JS 与OC 互相调用。...2.拦截URL 使用WKNavigationDelegate中的代理方法,拦截自定义的URL来实现JS调用OC方法。...JS 方法 JS 调用OC 方法后,有的操作可能需要将结果返回给JS。...这时候就是OC 调用JS 方法的场景。 WKWebView 提供了一个新的方法evaluateJavaScript:completionHandler:,实现OC 调用JS 等场景。
一、前言 近日,有朋友问我关于WKWebView与JS的交互问题,可我之前一直使用的是UIWebView,也不曾做过WKWebView的交互啊!...接下来大家一块学习下WKWebView是怎么实现原生代码和JS交互的。...-> Void) 五、WKWebView与JS的交互使用 首页创建html文件,代码如下: <meta charset...console.log(e) } } 1、iOS调用...做交互调用产生了划时代的影响。
WKWebView调用JS: func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!)...{ (result, err) in print(result, err) } } WKScriptMessageHandler:JS 调用 Swift 时需要用到协议中的一个方法来...JS调用WKWebView: func userContentController(_ userContentController: WKUserContentController, didReceive...{ // 调用JS方法 webView.evaluateJavaScript("sayHello('WebView你好!')")...// Swift方法,可以在JS中调用 func userContentController(_ userContentController: WKUserContentController,
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 这里添加了三个代理,代理方法会在下面实现。..., decidePolicyFor ...` 的方法是一样的,只是带的参数不一样,如果实现了,就必须调用`decisionHandler`进行响应的处理,否则报错。...{ print("加载完成: didFinish") // 调用js方法(把标题h1设置成红色) webView.evaluateJavaScript("changeHead()...2)、这里在app的原生页面写了两个button调用JS的方法/获取信息 func setupButtons() { let baseHeight = (navigationController?....data:\(String(describing: data)) error: \(String(describing: error))") }) } // MARK: - 调用JS的方法,并打印返回数据
runJavaScriptAlert 方法注意点 1.在JS端调用alert函数时,会触发此代理方法。...2.JS端调用alert时所传的数据可以通过message,打印message信息读取出JS端给你的信息。...*/ // runJavaScriptAlert // 在JS端调用alert函数时,会触发此代理方法。...// JS端调用alert时所传的数据可以通过message,打印message信息读取出JS端给你的信息。...端调用confirm函数时,会触发此方法 2.通过message可以拿到JS端所传给我们数据 3.在iOS端显示原生alert得到YES/NO后,通过completionHandler回调给JS端 4.
前言 由于目前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...iOS调用JS数据显示框 WKWebView在每次加载请求完成后会调用此方法 (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation
问题最近用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
.postMessage() // 发送消息 // 比如,JS要调用我们原生的方法,就可以通过这种方式了 - (void)addScriptMessageHandler...WKUserContentController是用于与JS交互的类,而所注入的JS是WKUserScript对象。...*)webView NS_AVAILABLE(10_11, 9_0); // 调用JS的alert()方法 - (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage...JS的confirm()方法 - (void)webView:(WKWebView *)webView runJavaScriptConfirmPanelWithMessage:(NSString *)...JS的prompt()方法 - (void)webView:(WKWebView *)webView runJavaScriptTextInputPanelWithPrompt:(NSString *)
2,WKWebView拥有与Safari中相同的Nitro JavaScript引擎,大大提高了页面JS执行速度;但是UIWebView不支持Nitro JavaScript引擎,所以加载较慢。...5,WKWebView可以和JS直接互调函数,交互更方便;而UIWebView则需要依靠WebViewJavaScriptBridge第三方库来协助处理与JS的交互,实现起来较繁琐。...苹果JS字符串,用于OC调用JS方法。 实例方法 - goBack。导航到后退列表的后退项中。 - goForward。导航到后退列表的前进项中。 - reload。重新加载当前页面。...*)navigation { } //页面加载失败时调用 - (void)webView:(WKWebView *)webView didFailNavigation:(null_unspecified...我们可以通过JSCore或者JSBridge来在native中执行JS代码,并且在JS中去回调Native的相关函数。 现在很火热的跨平台以及热修复技术,都是基于JS与Native通信来实现的。
/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...}]; }); 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
WKWebView WKWebView是现代 WebKit API 在 iOS 8 和 OS X Yosemite 应用中的核心部分。...WKWebView与js交互 所谓轻应用,简单的来说就是原生应用集成了html页面入口,还能通过js与native实现交互,例如:通过js调用native封装好的viewController实现扫描与对应反馈功能...(@"%s -- %@",__FUNCTION__, webView.URL); } 当内容开始返回时调用 - (void)webView:(WKWebView*)webView didCommitNavigation...:(WKNavigation*)navigation { NSLog(@"%s",__FUNCTION__); } 页面加载完成之后调用 - (void)webView:(WKWebView...(NSError*)error { NSLog(@"%s",__FUNCTION__); } 接收到服务器跳转请求之后调用 - (void)webView:(WKWebView*)webView
您可以使用WKWebView类来在应用程序中嵌入web内容,通过创建一个WKWebView对象,将其设置为视图,并发送一个请求来加载web内容。...:(WKWebView *)webView startURLSchemeTask:(id)urlSchemeTask; 停止载特定资源时调用 - (void)webView...:(WKWebView *)webView stopURLSchemeTask:(id)urlSchemeTask; WebKit将在你的handler停止处理这个任务时调用这个方法...block或者保存block并在以后的时间异步调用它 在已经收到response时决定是否允许或者取消页面的加载 - (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse...10.0+当用户发出了预览操作(比如3D Touch按压)时调用 - (UIViewController *)webView:(WKWebView *)webView previewingViewControllerForElement
image.png 链式调用其实跟语言无关,例如下面形式的代码就属于链式调用: car.start().drive() 下面的代码跟上面的代码作用是相同的 只不过上面的看起来更加简洁: car.start...当不从方法返回一组值时,链式方法调用非常有用,否则显然需要将方法调用分配给变量,并且无法进行链接: const result = car.start() if (result) { car.drive...() } 希望本文,可以帮助大家理解链式调用。
递归的概念 在程序中函数直接或间接调用自己 注意:使用递归函数一定要注意,处理不当就会进入死循环。递归函数只有在特定的情况下使用 ,比如阶乘问题。 3. 例子 1.
在UIWebView下,可以使用 [[NSURLCache sharedURLCache] removeAllCachedResponses];//清除缓存 WKWebView清除cookies的方法...cookies]) { NSLog(@"%@", cookie); } 参考链接:http://stackoverflow.com/questions/31289838/how-to-delete-wkwebview-cookies
示例Demo:WKWebView的使用 本文将从以下几方面介绍WKWebView: 1、WKWebView涉及的一些类 2、WKWebView涉及的代理方法 3、网页内容加载进度条的实现 4、JS...传出的参数体 NSDictionary * parameter = message.body; //JS调用OC if([message.name isEqualToString...涉及的代理方法 WKNavigationDelegate :主要处理一些跳转、加载处理操作 // 页面开始加载时调用 - (void)webView:(WKWebView *)webView...和OC的交互 JS调用OC 这个实现主要是依靠WKScriptMessageHandler协议类和WKUserContentController两个类:WKUserContentController对象负责注册...OC调用JS //OC调用JS changeColor()是JS方法名,completionHandler是异步回调block NSString *jsString = [NSString
无奈之下,我们只能约定一个JS接口,让游戏开发商实现该接口,具体是通过 canvas getImageData()方法取得图片数据后返回 base64 格式的数据,客户端在需要截图的时候,调用这个JS接口获取...退出的时候,JS刚好执行了window.alert(), alert 框可能弹不出来,completionHandler 最后没有被执行,导致 crash;另一种情况是在 WKWebView 一打开,...另一个 crash 发生在 WKWebView 退出前调用: -[WKWebView evaluateJavaScript: completionHandler:] 执行JS代码的情况下。...WKWebView 退出并被释放后导致completionHandler变成野指针,而此时 javaScript Core 还在执行JS代码,待 javaScript Core 执行完毕后会调用completionHandler...8.2、goBack API问题 WKWebView 上调用 -[WKWebView goBack], 回退到上一个页面后不会触发window.onload()函数、不会执行JS。
领取专属 10元无门槛券
手把手带您无忧上云