博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
webView和js交互
阅读量:4962 次
发布时间:2019-06-12

本文共 1861 字,大约阅读时间需要 6 分钟。

与 js 交互

OC 调用 JS

// 执行 js- (void)webViewDidFinishLoad:(UIWebView *)webView {    NSString *title = [webView stringByEvaluatingJavaScriptFromString:@"document.title;"]; NSLog(@"%@", title); [webView stringByEvaluatingJavaScriptFromString:@"clickme();"]; }

JS 调用 OC

准备代码

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {    NSLog(@"%@", request.URL); return YES; }

在 OC 中,如果代理方法返回 BOOL 类型,返回 YES 会正常执行

解释自定义协议

href="myfunc:///showMessage:/周末一起玩吧:D"调用 OC 中的方法 `showMessage:` 显示内容 `郊游怎么样:D`

代码实现

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {    NSLog(@"%@", request.URL.scheme); if ([request.URL.scheme isEqualToString:@"myfunc"]) { NSLog(@"%@", request.URL.pathComponents); NSArray *components = request.URL.pathComponents; NSString *funcName = components[1]; NSString *param = components[2]; SEL func = NSSelectorFromString(funcName); [self performSelector:func withObject:param]; } return YES; }

代码细节

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {    NSLog(@"%@", request.URL.scheme); if ([request.URL.scheme isEqualToString:@"myfunc"]) { NSLog(@"%@", request.URL.pathComponents); NSArray *components = request.URL.pathComponents; if (components.count != 3) { return NO; } NSString *funcName = components[1]; NSString *param = components[2]; SEL func = NSSelectorFromString(funcName); if ([self respondsToSelector:func]) { #pragma clang diagnostic push #pragma clang diagnostic ignored "-Warc-performSelector-leaks" [self performSelector:func withObject:param]; #pragma clang diagnostic pop } return NO; } return YES; }

转载于:https://www.cnblogs.com/Ruby-Hua/p/5249387.html

你可能感兴趣的文章
与众不同 windows phone (26) - Contacts and Calendar(联系人和日历)
查看>>
php+sqlite cms
查看>>
php实现邮件自动发送之PHPMailer
查看>>
Jersey
查看>>
CentOS 6.3安装phpmyadmin出错解决办法!
查看>>
Oracle的三种高可用集群方案
查看>>
OracleUNDO
查看>>
rhel 6.5 yum源的配置
查看>>
zorka
查看>>
JMX实现远程服务器Tomcat系统监控之三
查看>>
final+基本类型导致只编译常量类引起的错误
查看>>
2 -10 集合set
查看>>
(转)volatile关键字
查看>>
解决VS2012新建MVC3等项目时,收到加载程序集“NuGet.VisualStudio.Interop…”的错误...
查看>>
debian / ubuntu 如何安装软件
查看>>
iOS 通用button 上图下字
查看>>
iOS 时间戳转换为时间
查看>>
Ubuntu 12.04 中安装和配置 Java JDK(转)
查看>>
The disk contains an unclean file system
查看>>
「Poj1845」Sumdiv 解题报告
查看>>