html5指南-6.如何创建离线web应用程序实现离线访问


Posted in HTML / CSS onJanuary 07, 2013

今天我们的内容是关于如何创建离线web应用,他的好处是可以让浏览器下载我们指定的web资源,这样用户在离线状态下也能正常使用我们的站点。

1.定义Manifest

我们使用manifest列举出需要离线时访问的资源,他本身是一个文本类型的文件,第一行经常是CACHE MANIFEST,然后列举我们需要的资源,每行一个。文件没有固定的命名规则,后缀名也没有要求,唯一的要求就是需要把后缀名在服务器端以text/cache-manifest的MIME类型定义。

如果是iis 7服务器,按照下面的步骤

1.比如后缀名为.appcache,打开iis7,选择根节点(这样所有站点都会继承配置,也可以针对单个站点配置);

2.双击右侧的MIME类型;

html5指南-6.如何创建离线web应用程序实现离线访问

3.点击右键添加MIME类型,这样就完成了配置。

html5指南-6.如何创建离线web应用程序实现离线访问

服务器配置完毕,添加manifest文件。

复制代码
代码如下:

CACHE MANIFEST
manifestFile.html
img/1.jpg
img/2.jpg
img/3.jpg

然后我们看下面的例子。

复制代码
代码如下:

<!DOCTYPE HTML>
<html manifest="manifest.appcache">
<head>
<title>Example</title>
<style>
img
{
border: medium double black;
padding: 5px;
margin: 5px;
}
</style>
</head>
<body>
<img alt="" id="imgtarget" src="img/1.jpg" />
<div>
<button id="1">car1</button>
<button id="2">car2</button>
<button id="3">car3</button>
</div>
<script>
var buttons = document.getElementsByTagName('button');
for (var i = 0; i < buttons.length; i++) {
buttons[i].onclick = handleButtonPress;
}
function handleButtonPress(e) {
document.getElementById('imgtarget').src = 'img/' + e.target.id + '.jpg';
}
</script>
</body>
</html>
程序运行,根据浏览器的不同,有的浏览器会询问你,是否允许保存离线数据到本地,有的不会。这样一个简单的离线应用就创建好了。

2.疑惑解答

我在学习这部分知识的时候也遇到些问题和疑惑,如:

1.为什么我直接运行vs2010(我的开发环境),离线应用程序不能正确运行?

2.我怎么才知道离线应用是否创建成功?

3.我怎么才知道当前应用是否是离线状态?

4.暂停了iis服务后应该就处于离线状态了吧,为什么我重新刷新页面要报404错误?

现在我就这些我遇到的问题进行解答。

2.1.首先解释第一个疑问。关于这个问题,关键点在于你的应用web配置项是如何配置的,如果使用的是vs开发服务器的形式,那么我们就没有办法为它设置MIME类型,所以这种情况下我们的离线应用时没办法用的。剩下的两种web配置方式,只要你正确的按照,我上面介绍的配置MIME类型的方法配置了iis服务器,你的离线应用就能正确运行。

html5指南-6.如何创建离线web应用程序实现离线访问

2.2.下面解释第二个问题,这里需要借助chrome浏览器的调试工具,使用chrome浏览器打开我们的web程序,按F12,切换到Resources选项卡。只要Application Cache下面有我们配置的信息,能找到缓存的文件,就证明我们的离线应用创建成功了。

html5指南-6.如何创建离线web应用程序实现离线访问

2.3.还是使用chrome的调试工具,还是在Resources选项卡,注意到红线圈住的地方没,Online表示在线。

html5指南-6.如何创建离线web应用程序实现离线访问

拔掉网线,显示Offline,表示离线,这时离线应用的效果就能表现出来了。

html5指南-6.如何创建离线web应用程序实现离线访问

2.4.关于最后一个问题,还是要借助chrome浏览器的调试工具,当我们暂停iis服务的时候,我们看下Resources选项卡的显示,仍然是Online,只是后面从IDLE变成了OBSOLETE。这也就解释了为什么暂停本地iis,离线应用的离线效果显示不出来。

html5指南-6.如何创建离线web应用程序实现离线访问

本节的内容到此为止。

HTML / CSS 相关文章推荐
CSS3——齿轮转动关键代码
May 02 HTML / CSS
css3 transform及原生js实现鼠标拖动3D立方体旋转
Jun 20 HTML / CSS
使用CSS3 制作一个material-design 风格登录界面实例
Dec 12 HTML / CSS
基于CSS3的animation属性实现微信拍一拍动画效果
Jun 22 HTML / CSS
简单介绍HTML5中audio标签的使用
Sep 24 HTML / CSS
HTML5实现多张图片上传功能
Mar 11 HTML / CSS
html5组织内容_动力节点Java学院整理
Jul 10 HTML / CSS
H5 canvas实现贪吃蛇小游戏
Jul 28 HTML / CSS
浅谈关于html5中图片抛物线运动的一些心得
Jan 09 HTML / CSS
HTML table 表格边框的实现思路
Oct 12 HTML / CSS
Html5页面播放M4a音频文件
Mar 30 HTML / CSS
使用CSS实现按钮边缘跑马灯动画
May 07 HTML / CSS
html5指南-7.geolocation结合google maps开发一个小的应用
Jan 07 #HTML / CSS
在html5的Canvas上绘制椭圆的几种方法总结
Jan 07 #HTML / CSS
html5构建触屏网站之touch事件介绍
Jan 07 #HTML / CSS
html5构建触屏网站之网站尺寸探讨
Jan 07 #HTML / CSS
使用css创建三角形 使用CSS3创建3d四面体原理及代码(html5实践)
Jan 06 #HTML / CSS
html5中canvas学习笔记2-判断浏览器是否支持canvas
Jan 06 #HTML / CSS
html5中canvas学习笔记1-画板的尺寸与实际显示尺寸
Jan 06 #HTML / CSS
You might like
PHP数组交集的优化代码分析
2011/03/06 PHP
Yii2中YiiBase自动加载类、引用文件方法分析(autoload)
2016/07/25 PHP
thinkPHP框架对接支付宝即时到账接口回调操作示例
2016/11/14 PHP
PHP实现针对日期,月数,天数,周数,小时,分,秒等的加减运算示例【基于strtotime】
2017/04/19 PHP
详解PHP使用日期时间处理器Carbon人性化显示时间
2017/08/10 PHP
PHP全局使用Laravel辅助函数dd
2019/12/26 PHP
php对mongodb的扩展(小试牛刀)
2012/11/11 Javascript
window.open打开页面居中显示的示例代码
2013/12/27 Javascript
JS图像无缝滚动脚本非常好用
2014/02/10 Javascript
javascript实现获取cookie过期时间的变通方法
2014/08/14 Javascript
一个css与js结合的下拉菜单支持主流浏览器
2014/10/08 Javascript
修改或扩展jQuery原生方法的代码实例
2015/01/13 Javascript
基于JS实现Android,iOS一个手势动画效果
2016/04/27 Javascript
Javascript基础教程之比较null和undefined值
2016/05/16 Javascript
Javascript小技能总结(推荐)
2016/06/02 Javascript
原生JS实现轮播效果+学前端的感受(防止走火入魔)
2016/08/21 Javascript
Bootstrap和Angularjs配合自制弹框的实例代码
2016/08/24 Javascript
jQuery+HTML5实现弹出创意搜索框层
2016/12/29 Javascript
JS编写函数实现对身份证号码最后一位的验证功能
2016/12/29 Javascript
关于vue.js过渡css类名的理解(推荐)
2017/04/10 Javascript
深入理解vue-loader如何使用
2017/06/06 Javascript
关于webpack2和模块打包的新手指南(小结)
2017/08/07 Javascript
JS实现放烟花效果
2020/03/10 Javascript
react组件基本用法示例小结
2020/04/27 Javascript
[03:40]2014DOTA2国际邀请赛 B神专访:躲箭真的很难
2014/07/13 DOTA
Python安装Numpy和matplotlib的方法(推荐)
2017/11/02 Python
使用OpenCV实现人脸图像卡通化的示例代码
2021/01/15 Python
美国著名的女性内衣零售商:Frederick’s of Hollywood
2018/02/24 全球购物
给男朋友的道歉信
2014/01/12 职场文书
市场营销专业大学生职业生涯规划文
2014/03/06 职场文书
文秘档案管理岗位职责
2014/03/06 职场文书
法律系毕业生求职信
2014/05/28 职场文书
2014年党建工作汇报材料
2014/10/27 职场文书
客房服务员岗位职责
2015/02/09 职场文书
Pygame Rect区域位置的使用(图文)
2021/11/17 Python
Nginx如何配置多个服务域名解析共用80端口详解
2022/09/23 Servers