WKWebView 和本地代码交互方式

本文介绍了从iOS 8.0开始使用的WKWebView,重点讲解了三种WKWebView与本地程序交互的方式:加载阶段执行JS、随时执行JS以及HTML通过JS发送消息到本地。此外,还详细阐述了导航控制的相关API,包括loading属性、直接导航操作以及通过navigationDelegate进行精细控制。最后提到了参考文献供深入研究。
摘要由CSDN通过智能技术生成

从iOS 8.0开始,应该使用WKWebView。

消息交互

这里写图片描述

WKWebView和本地程序的交互有3种方式:

第一种在WebView内容的特定加载阶段执行一段JS。
WKWebViewconfigurationusercontentController中添加一个WKUserScript。使用WKUserContentControlleraddUserScript方法,这个方法中可以指定JS代码执行的时机,目前只有WKUserScriptInjectionTimeAtDocumentStartWKUserScriptInjectionTimeAtDocumentEnd两个选项。

NSString *jsCode = @"var s = document.createElement('style');"
    "s.textContent = '"
    "body { font-size: 40px;}; '"
    "\n"
    "document.documentElement.appendChild(s);\n";

WKUserScript *script = [[WKUserScript alloc] 
initWithSource:jsCode
injectionTime:WKUserScriptInjectionTimeAtDocumentStart
forMainFrameOnly:YES];

WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
config.userContentController = [[WKUserContentController alloc] init];
[config.userContentController addUserScript:script];
[config.userContentController addScriptMessageHandler: self name:@"playbutton”];

第二种方式是在任何时候,本地代码让W

在Web开发中,JS和Native的交互是指通过JavaScript(JS)代码和本地代码进行相互通信的过程。JS是一种脚本语言,在浏览器中执行,而Native是指底层本地代码,如Android的Java或iOS的Objective-C/Swift。 JS和Native交互的目的是为了在Web应用程序中获得更强大的功能和更好的用户体验。通过JS和Native的交互,可以实现以下功能: 1. 调用Native功能:JS可以通过与Native进行通信,调用本地功能,例如访问设备的传感器、获取设备信息、发送本地推送等。这样,Web应用程序就可以更好地与设备硬件和本地特性进行交互。 2. 获取Native数据:JS可以向Native请求数据,例如获取本地数据库的数据、获取设备的位置信息等。通过这种方式,Web应用程序可以使用本地的数据,实现更为复杂和个性化的功能。 3. 更新Web页面:Native可以通过调用JS的代码来更新Web页面的内容,例如在Native端接收到新的数据时,可以通过JS将数据更新到Web页面上,实现实时的页面刷新。 为了实现JS和Native的交互,通常有以下几种方式: 1. 使用WebView提供的接口:在移动应用中,使用WebView作为嵌入式浏览器可以实现JS和Native的交互。通过WebView提供的接口,可以在JS和Native之间进行消息传递和函数调用。 2. 使用JavaScriptBridge:JavaScriptBridge是一种将JS和Native进行桥接的技术。通过在Native代码中注入JavaScriptBridge对象,并在JS代码中引用相关的Native方法和属性,可以实现JS和Native的相互调用。 3. 使用消息机制:在一些特定的平台上,还可以通过消息机制实现JS和Native之间的通信。例如,Android平台可以使用JavaScriptInterface来定义JS可以调用的Native方法,而iOS平台可以使用WKWebView提供的消息机制进行JS和Native的交互。 总结来说,JS和Native的交互是为了实现Web应用程序与本地功能和数据的交互,通过使用WebView接口、JavaScriptBridge或消息机制,可以实现JS和Native的相互调用和通信。这样一来,Web应用程序就能获得更多的功能和更好的用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值