JS与iOS之间的通信

JS与iOS之间的通信,主要运用两个方法:(PhoneGap框架也是基于此原理)

1、UIWebView的 stringByEvaluatingJavaScriptFromString方法

2、UIWebViewDelegate的

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType方法

示例:

上部分是一个UIWebView,实现UIWebViewDelegate

[plain] view plain copy print ?

  1. - (void)viewDidLoad

  2. {

  3. [super viewDidLoad];

  4. NSString *path = [[NSBundle mainBundle] pathForResource:@"jm/info" ofType:@"html"];

  5. NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL fileURLWithPath:path]];

  6. [self.webView loadRequest:request];

  7. }

    • (void)viewDidLoad { [super viewDidLoad]; NSString *path = [[NSBundle mainBundle] pathForResource:@"jm/info" ofType:@"html"]; NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL fileURLWithPath:path]]; [self.webView loadRequest:request]; }

[plain] view plain copy print ?

  1. #pragma mark - UIWebViewDelegate

  2. - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

  3. {

  4. if([request.mainDocumentURL.relativePath isEqualToString:@"/getInfo/name"])

  5. {

  6. NSString *info = [[UIDevice currentDevice] name];

  7. NSString *js = [NSString stringWithFormat:@"showInfo(\"name\",\"%@\")",info];

  8. [self.webView stringByEvaluatingJavaScriptFromString:js];

  9. return false;

  10. }

  11. if([request.mainDocumentURL.relativePath isEqualToString:@"/getInfo/systemVersion"])

  12. {

  13. NSString *info = [[UIDevice currentDevice] systemVersion];

  14. NSString *js = [NSString stringWithFormat:@"showInfo(\"systemVersion\",\"%@\")",info];

  15. [self.webView stringByEvaluatingJavaScriptFromString:js];

  16. return false;

  17. }

  18. return true;

  19. }

#pragma mark - UIWebViewDelegate
1- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 2{ 3 if([request.mainDocumentURL.relativePath isEqualToString:@"/getInfo/name"]) 4 { 5 NSString *info = [[UIDevice currentDevice] name]; 6 NSString *js = [NSString stringWithFormat:@"showInfo(\"name\",\"%@\")",info]; 7 [self.webView stringByEvaluatingJavaScriptFromString:js]; 8 return false; 9 } 10 if([request.mainDocumentURL.relativePath isEqualToString:@"/getInfo/systemVersion"]) 11 { 12 NSString *info = [[UIDevice currentDevice] systemVersion]; 13 NSString *js = [NSString stringWithFormat:@"showInfo(\"systemVersion\",\"%@\")",info]; 14 [self.webView stringByEvaluatingJavaScriptFromString:js]; 15 return false; 16 } 17 return true; 18}

JS代码:

[html] view plain copy print ?

  1. <!DOCTYPE html\>
  2. <html>

  3. <head>

  4. <title>city</title>

  5. <meta charset="utf-8">

  6. <meta name="viewport" content="width=device-width, initial-scale=1">

  7. <link rel\="stylesheet" href\="jquery.mobile-1.0.css"/>
  8. <script type\="text/javascript" src\="jquery.js"\></script\>
  9. <script type\="text/javascript" src\="jquery.mobile-1.0.js"\></script\>
  10. <script>

  11. function getInfo(name)

  12. {

  13. window.location = "/getInfo/"+name;

  14. }

  15. function showInfo(id,info)

  16. {

  17. $("p#"+id).html(info);

  18. }

  19. </script>

  20. </head>

  21. <body>

  22. <div data-role\="page"\>
  23. <div data-role\="content"\>
  24. <h2>Divice Info</h2>

  25. <div data-role\="collapsible-set" data-theme\="c" data-content-theme\="d"\>
  26. <div data-role\="collapsible"\>
  27. <h3 onclick\="getInfo('name')"\>name</h3\>
  28. <p id\="name"\></p\>
  29. </div>

  30. <div data-role\="collapsible"\>
  31. <h3 onclick\="getInfo('systemVersion')"\>systemVersion</h3\>
  32. <p id\="systemVersion"\></p\>
  33. </div>

  34. </div>

  35. </div>

  36. </div>

  37. </body>

  38. </html>

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )