ios和android都提供了有关webview和javascript通讯的功能,这就使开发者根据手机的系统展示适合手机的界面,是界面开发更加简单。

我的原型主要实现通过UIWebView展示本地的html、css、javascript文件,并且和ios互相通讯,用来展示数据。

下面是我实现的一个简单demo,界面效果如下:

点击连接调用ios中的提醒功能:

实现过程:

  • 首先创建一个工程,ipad.web1,编译运行成功。
  • 实现webview的代码:

#import

@interface ipad_web1ViewController : UIViewController
{
    IBOutlet UIWebView *myWebView;
}
@property (nonatomic,retain) UIWebView *myWebView;
@end

相应的.m文件:

#import "ipad_web1ViewController.h"

@implementation ipad_web1ViewController
@synthesize myWebView;
- (void)viewDidLoad {
    [super viewDidLoad];
    self.myWebView.delegate=self;
    NSString *path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];
    [myWebView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath: path]]];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return YES;
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}

- (void)viewDidUnload {
    self.myWebView=nil;
}

- (void)dealloc {
    [self.myWebView release];
    [super dealloc];
}
#pragma mark –
#pragma mark UIWebViewDelegate
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
   if ( [request.mainDocumentURL.relativePath isEqualToString:@"/click/false"] ) {    
        NSLog( @"not clicked" );
        return false;
    }
    if ( [request.mainDocumentURL.relativePath isEqualToString:@"/click/true"] ) {        //the image is clicked, variable click is true
        NSLog( @"image clicked" );
        UIAlertView* alert=[[UIAlertView alloc]initWithTitle:@"JavaScript called"
                                                     message:@"You’ve called iPhone provided control from javascript!!" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:nil];
        [alert show];
        [alert release];
        return false;
    }
    return true;
}
- (void)webViewDidStartLoad:(UIWebView *)webView
{
    NSString *title = [webView stringByEvaluatingJavaScriptFromString:@"document.title"];
    NSLog(@"title11=%@",title);
}
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    NSString *title = [webView stringByEvaluatingJavaScriptFromString:@"document.title"];
    NSLog(@"title=%@",title);
    //添加数据
   [myWebView stringByEvaluatingJavaScriptFromString:@"var field = document.getElementById('field_2');"  
     "field.value='Multiple statements - OK';"];
    //[myWebView stringByEvaluatingJavaScriptFromString:@"var script = document.createElement('script');"  
//     "script.type = 'text/javascript';"  
//     "script.text = \"function myFunction() { "  
//     "var field = document.getElementById('field_3');"  
//     "field.value='Calling function - OK';"  
//     "}\";"  
//     "document.getElementsByTagName('head')[0].appendChild(script);"];  
//    
//    [myWebView stringByEvaluatingJavaScriptFromString:@"myFunction();"];  
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
}
@end

  • 最后在Interface Builder中添加UIwebView控件,并且和相应的实体相关联。

NSString *title = [webView stringByEvaluatingJavaScriptFromString:@"document.title"];
    NSLog(@"title=%@",title);

主要是获取html文件的title名字。

[myWebView stringByEvaluatingJavaScriptFromString:@"var field = document.getElementById('field_2');"  
     "field.value='Multiple statements - OK';"];

添加相应的表单信息。

  • 接下来添加index.html文件:

ttp://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd%22" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; color: #0071BB; outline-style: none; outline-width: initial; outline-color: initial;">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
http://www.w3.org/1999/xhtml">

How to build an iPhone website
   
   
   
   
   
   
    < type="text/javascript" src="test.js">

测试

click me

  • 添加相应的css文件:

body {
    background-color: #F2F5A9;
}

  • 添加相应的js文件:

function imageClicked(){
    var clicked=true;
    window.location="/click/"+clicked;
}

运行,点击连接应该不出相应的对话框,说明相应的javascript没有生效。修改办法是打开targets,点击ipad.web1,移动相应的test.js文件到下图即可。

  
源代码:http://easymorse-iphone.googlecode.com/svn/trunk/ipad.web1/

转载于:https://www.cnblogs.com/zhuolaiqiang/archive/2011/06/24/2088911.html

ios UIWebView调用本地html和javascript,并且和ios通讯相关推荐

  1. [ios]ios读写文件本地数据

    参考:http://blog.csdn.net/tianyitianyi1/article/details/7713103 ios - Write写入方式:永久保存在磁盘中.具体方法为: 第一步:获得 ...

  2. android webview ios uiwebview和wkwebview的交互以及本地缓存

    android webview js调用java的方式 1.java通过注解@JavascriptInterface导出方法, js通过window.别名.方法名调用方法 2.拦截url方式,通过sh ...

  3. JavaScript 调用本地exe文件

    web项目中要调第三方客户端,于是归纳整理了js调用客户端exe程序的几种方法,如下:    方法一 :  使用ActiveXObject直接执行指定路径的.exe文件 ,此方法只针对IE浏览器 &l ...

  4. 使用JavaScript调用本地打印机

    在前端页面调用本地打印机的实现: 点击打印之后调出打印机 代码实现: # HTML代码 <!DOCTYPE html> <html lang="en"> & ...

  5. (0095)iOS开发之本地文件预览的三种方法(3)

    (0090)iOS开发之本地文件预览的三种方法(1) (0094)iOS开发之本地文件预览的三种方法(2) 用功能强大的Webview来实现文件预览功能 我导入的 ios.pdf 前两种可以打开,但是 ...

  6. iOS五种本地缓存数据方式

    iOS五种本地缓存数据方式 iOS本地缓存数据方式有五种:前言 1.直接写文件方式:可以存储的对象有NSString.NSArray.NSDictionary.NSData.NSNumber,数据全部 ...

  7. web dialog 内嵌 图片_Unity游戏如何在iOS上调用Facebook原生对话框分享图片

    原文发表于Unity中国论坛 ,如果对你有帮助请关注我! Unity游戏如何在iOS上调用Facebook原生对话框分享图片 - Unity​unity.cn 手头上的一个游戏项目需要实现截屏并分享到 ...

  8. 实现调用本地office打开在线文档功能

    一.需求阐述: 项目中需要做一个文档管理功能,该功能包含最基础的上传.下载.删除等功能,但是额外需要实现点击文档列表链接,实现调用本地对应office打开对应类型文档的功能,现将该功能实现方案列出来, ...

  9. H5调用本地相册/相机上传图片

    在开发中有时候会用到H5调用本地图片或者相机,像第三方的实名认证,在线客服等等都需要上传图片.H5中只需要通过<input>调用即可,ios是可以的实现的,不需要自己处理,除非客户端压缩图 ...

最新文章

  1. 时间为什么用 12 进制?
  2. PacBio软件总览 - 初级分析
  3. Python 3/前端 画图工具:Matplotlib,canvajs,pyecharts
  4. CSS 样式书写规范
  5. Xamarin.Forms教程下载安装Windows版的Xamarin开发工具
  6. LeCun自曝使用C语言23年之久,2年前才上手Python,还曾短暂尝试Lua
  7. python与用户交互、数据类型
  8. MySQL查询结果纵向输出标识符\G
  9. LeetCode 779. 第K个语法符号(找规律)
  10. J2EE 第二阶段项目(八)
  11. 修改数据库表nbsp;字段参考的数据…
  12. 稠密检索模型的zero-shot能力究竟如何?
  13. 明日之后维护服务器什么情况,明日之后无法连接服务器是什么原因
  14. Office Open XML 的测量单位
  15. thinkpadt410接口介绍_thinkpadt410价格与评测介绍【图文】
  16. SpringSecurity+JWT+OAuth2
  17. 【破解利器】反汇编工具 and 反编译(Decompilers)
  18. 结构数组使用(bushi)
  19. MOS管工作动画原理图详解
  20. 7-1 最长公共前后缀

热门文章

  1. python中的urllib库_七、urllib库(一)
  2. 5.0安装没有costom mysql_mysql5.0 64位
  3. r语言可以写c程序吗,[求助]R一般用什么写程序?
  4. 【设计模式】两大策略和六大原则
  5. 2021年下信息系统项目管理师真题各章节占分比
  6. 常用于生产部署方式详解 灰度发布 滚动发布 蓝绿发布
  7. 笔记-信息化与系统集成技术-信息的质量属性
  8. Python 内置方法和属性应用:反射和单例
  9. Leaflet中使用leaflet-sidebar插件实现侧边栏效果
  10. Leaflet中原生方式实现测量面积