ios UIWebView调用本地html和javascript,并且和ios通讯
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通讯相关推荐
- [ios]ios读写文件本地数据
参考:http://blog.csdn.net/tianyitianyi1/article/details/7713103 ios - Write写入方式:永久保存在磁盘中.具体方法为: 第一步:获得 ...
- android webview ios uiwebview和wkwebview的交互以及本地缓存
android webview js调用java的方式 1.java通过注解@JavascriptInterface导出方法, js通过window.别名.方法名调用方法 2.拦截url方式,通过sh ...
- JavaScript 调用本地exe文件
web项目中要调第三方客户端,于是归纳整理了js调用客户端exe程序的几种方法,如下: 方法一 : 使用ActiveXObject直接执行指定路径的.exe文件 ,此方法只针对IE浏览器 &l ...
- 使用JavaScript调用本地打印机
在前端页面调用本地打印机的实现: 点击打印之后调出打印机 代码实现: # HTML代码 <!DOCTYPE html> <html lang="en"> & ...
- (0095)iOS开发之本地文件预览的三种方法(3)
(0090)iOS开发之本地文件预览的三种方法(1) (0094)iOS开发之本地文件预览的三种方法(2) 用功能强大的Webview来实现文件预览功能 我导入的 ios.pdf 前两种可以打开,但是 ...
- iOS五种本地缓存数据方式
iOS五种本地缓存数据方式 iOS本地缓存数据方式有五种:前言 1.直接写文件方式:可以存储的对象有NSString.NSArray.NSDictionary.NSData.NSNumber,数据全部 ...
- web dialog 内嵌 图片_Unity游戏如何在iOS上调用Facebook原生对话框分享图片
原文发表于Unity中国论坛 ,如果对你有帮助请关注我! Unity游戏如何在iOS上调用Facebook原生对话框分享图片 - Unityunity.cn 手头上的一个游戏项目需要实现截屏并分享到 ...
- 实现调用本地office打开在线文档功能
一.需求阐述: 项目中需要做一个文档管理功能,该功能包含最基础的上传.下载.删除等功能,但是额外需要实现点击文档列表链接,实现调用本地对应office打开对应类型文档的功能,现将该功能实现方案列出来, ...
- H5调用本地相册/相机上传图片
在开发中有时候会用到H5调用本地图片或者相机,像第三方的实名认证,在线客服等等都需要上传图片.H5中只需要通过<input>调用即可,ios是可以的实现的,不需要自己处理,除非客户端压缩图 ...
最新文章
- 时间为什么用 12 进制?
- PacBio软件总览 - 初级分析
- Python 3/前端 画图工具:Matplotlib,canvajs,pyecharts
- CSS 样式书写规范
- Xamarin.Forms教程下载安装Windows版的Xamarin开发工具
- LeCun自曝使用C语言23年之久,2年前才上手Python,还曾短暂尝试Lua
- python与用户交互、数据类型
- MySQL查询结果纵向输出标识符\G
- LeetCode 779. 第K个语法符号(找规律)
- J2EE 第二阶段项目(八)
- 修改数据库表nbsp;字段参考的数据…
- 稠密检索模型的zero-shot能力究竟如何?
- 明日之后维护服务器什么情况,明日之后无法连接服务器是什么原因
- Office Open XML 的测量单位
- thinkpadt410接口介绍_thinkpadt410价格与评测介绍【图文】
- SpringSecurity+JWT+OAuth2
- 【破解利器】反汇编工具 and 反编译(Decompilers)
- 结构数组使用(bushi)
- MOS管工作动画原理图详解
- 7-1 最长公共前后缀