iOS与js的交互可以通过以下几种方式实现: 使用UIWEBView或WKWebView加载html页面并在其中添加javascript脚本,通过WebView的代理方法捕获Javascript脚本发出的事件,从而实现与ioS原生代码的交互
使用UIWEBView或WKWebView加载html页面并在其中添加javascript脚本,通过WebView的代理方法捕获Javascript脚本发出的事件,从而实现与ioS原生代码的交互。
使用JSBridge框架,它提供了一种简单的方式在Javascript和iOS原生代码之间进行通信。
在Javascript脚本中,可以使用以下api实现与iOS原生代码的交互:
使用window.webkit.messageHandlers对象将消息发送到iOS原生代码中。
例如:
window.webkit.messageHandlers.methodName.postMessage(data);
其中methodName是iOS原生代码中要执行的方法名,data是要传递给原生方法的数据。
通过window.webkit.messageHandlers对象执行从iOS原生代码中返回的方法。
例如:
window.methodName = function(data) { // 处理从iOS原生代码中返回的数据 };
其中methodName是要执行的方法名,data是要传递给Javascript方法的数据。
使用document.location或window.location.href跳转到一个自定义的url,然后在iOS原生代码中捕获这个url并执行相应的操作。
例如:
window.location.href = 'myapp://methodName?param=data';
其中myapp是自定义的协议头,methodName是要执行的方法名,param是要传递给原生方法的参数。
在iOS原生代码中,可以使用以下方法拦截Javascript发送的消息:
使用WKScriptMessageHandler协议捕获来自WebView中Javascript的消息。
例如:
[self.webView.configuration.userContentController addScriptMessageHandler:self name:@"methodName"];
其中methodName应该与Javascript脚本中传递的方法名相同。
通过UIWebViewDelegate协议的shouldStartLoadWithRequest方法拦截Javascript发送的消息。
例如:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { if ([request.URL.scheme isEqualToString:@"myapp"]) { NSString *methodName = request.URL.host; NSString *param = request.URL.query; // 处理从Javascript中发送过来的消息 return NO; } return YES; }
其中myapp是Javascript中使用的自定义协议头,methodName和param是Javascript中使用的方法名和参数。
在iOS原生代码中,可以使用以下方法向Javascript发送消息:
通过evaluateJavaScript方法执行Javascript脚本。
例如:
NSString *jsCode = [NSString stringWithFORMat:@"methodName('%@')", data]; [self.webView evaluateJavaScript:jsCode completionHandler:nil];
其中methodName是Javascript中要执行的方法名,data是要传递给Javascript方法的数据。
使用stringByEvaluatingJavaScriptFromString方法执行Javascript脚本。
例如:
NSString *jsCode = [NSString stringWithFormat:@"methodName('%@')", data]; NSString *result = [self.webView stringByEvaluatingJavaScriptFromString:jsCode];
其中methodName是Javascript中要执行的方法名,data是要传递给Javascript方法的数据。
此外,在使用UIWebView或WKWebView加载Html页面时,可以通过在WebView的User-Agent中添加自定义信息来实现与iOS原生代码的交互。例如,在User-Agent中添加“iOSApp”信息,然后在Javascript中通过navigator.userAgent判断当前页面是否在iOS原生App中打开。
来源地址:https://blog.csdn.net/G_Kingna/article/details/129881386
--结束END--
本文标题: 关于ios客户端与web网页js交互
本文链接: https://www.lsjlt.com/news/410269.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-01-21
2023-10-28
2023-10-28
2023-10-27
2023-10-27
2023-10-27
2023-10-27
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
一口价域名售卖能注册吗?域名是网站的标识,简短且易于记忆,为在线用户提供了访问我们网站的简单路径。一口价是在域名交易中一种常见的模式,而这种通常是针对已经被注册的域名转售给其他人的一种方式。
一口价域名买卖的过程通常包括以下几个步骤:
1.寻找:买家需要在域名售卖平台上找到心仪的一口价域名。平台通常会为每个可售的域名提供详细的描述,包括价格、年龄、流
443px" 443px) https://www.west.cn/docs/wp-content/uploads/2024/04/SEO图片294.jpg https://www.west.cn/docs/wp-content/uploads/2024/04/SEO图片294-768x413.jpg 域名售卖 域名一口价售卖 游戏音频 赋值/切片 框架优势 评估指南 项目规模
0