在WebApp中怎么使用JS调用iOS的函数

JavaScript024

在WebApp中怎么使用JS调用iOS的函数,第1张

先看一下Web中,我们给h1标签添加一个onclick事件,让它在被点击之后,修改当前的url。

Web中的HTML代码:

<html>

<head>

<script>

function getInfo(name)

{

window.location = "/getInfo/"+name

}

</script>

</head>

<body>

<h1 onclick="getInfo('why')">Name</h1>

</body>

</html>

iOS中,先拖拽WebView,访问localhost,然后通过WebView的委托事件监听url跳转操作,并且把跳转截取下来。

也就是说,在onclick的时候,普通浏览器灰跳转到那个url,但是在iOS的这个WebView里面,这个跳转会被拦截,

用这种方式可以巧妙地实现JS调用iOS的原生代码:

//

// DWViewController.m

// DareWayApp

//

// Created by why on 14-6-3.

// Copyright (c) 2014年 DareWay. All rights reserved.

//

#import "DWViewController.h"

@interface DWViewController ()

@property (weak, nonatomic) IBOutlet UIWebView *myWebview // 主页面

@end

@implementation DWViewController

- (void)viewDidLoad

{

[super viewDidLoad]

// Do any additional setup after loading the view, typically from a nib.

// 适配iOS6的状态栏

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {

_myWebview.frame = CGRectMake(0,20,self.view.frame.size.width,self.view.frame.size.height-20)

}

// 加载制定的URL

NSURL *url =[NSURL URLWithString:@"http://localhost"]

NSURLRequest *request =[NSURLRequest requestWithURL:url]

[_myWebview setDelegate:self]

[_myWebview loadRequest:request]

}

// 网页中的每一个请求都会被触发

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

{

// 每次跳转时候判断URL

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

{

NSLog(@"why")

return NO

}

return YES

}

- (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning]

// Dispose of any resources that can be recreated.

}

1、首先我们需要先新建一个WebApp项目,目录结构为:

index.html 项目首页html入口文件

--html 项目文件夹

--html/css 用于存放用到的css文件

--html/js 用于存放用到的js文件

2、index.html我们可以用Dreamweaver CC来新建,操作如下:点击文件菜单,再点新建,在弹出的窗口中点流体网格布局,再点创建。

3、创建好html文件后,点击文件-另存为,将文件名改为:index.html,保存到我们新建的WebApp项目根目录下。如下图:

4、这时会弹出一个对话框,提示内容如下:

这时,我们将用到的boilerplate.css文件和Untitled-2.css文件,复制到WebApp项目html/css目录下,将用到的respond.min.js文件复制到WebApp项目html/js目录下。

这里解释下,boilerplate.css是定义跨浏览器兼容性的样式文件,Untitled-2.css是定义自适应媒体查询的样式文件,respond.min.js扩展IE8以下浏览器支持css3的js文件,如果不需要考虑支持IE8以下浏览器,可以删除掉。这里由于我们是打包生成手机端的APP,不需要用到respond.min.js,我们把它删除掉,然后再修改下CSS的引用路径,如下:

<link href="html/css/boilerplate.css" rel="stylesheet" type="text/css">

<link href="html/css/Untitled-1.css" rel="stylesheet" type="text/css">

5、这样一个简单的WebApp项目就新建好了。优化下html代码,如下图:

6、接着我们来使用KM盒子将这个WebApp项目打包生成手机APP应用。

打开KM盒子软件,点击安卓设备按钮,在弹出的菜单中选择 自定义打包。

接着,在弹出的对话框,设置 APK名称,安装包ID,文件路径选择我们刚才的WeApp文件夹目录,然后点击编译文件。

接着,在弹出的对话框中,双击三个图片,分别设置APK的竖向启动画面、横向启动画面和桌面图标文件,图片格式为PNG图片文件。

最后,在弹出的对话框,点击生成APK安装包,这样一个WebApp项目打包生成手机APP就完成了。

我们来看下安装到手机上的效果:

最后,我们学习下Dreamweaver CC生成的流体网格布局CSS文件,具体看源文件,我加了中文注释:

@charset "utf-8"

/** HTML5 ✰ Boilerplate color:rgb(144 255 173)">v3.0.2

/*

* HTML5 ✰ 样板

*

链接:https://github.com/ljianshu/mt-app

适合没有经验的朋友。

集点菜、用户评价和商家信息为一体的移动端点餐APP

1. 点餐页面

点选商品后自动添加到购物车,并计算好总价,在商品列表、购物车列表和商品详情页都可以随意增减数目,此外左侧商品分类和右侧的商品相互关联,通过better-scroll插件滑动商品列表时,相应的商品分类也会跟着跳转。

2. 用户评价页面

主要包括一个TAB栏,包括三部分:全部、有图和评价三个模块

3. 商家信息页面

主要介绍一些商家基本信息,可以通过better-scroll插件,进行左右滑动图片。

效果预览

再说一篇,是饿了么的翻版。