我的编程空间,编程开发者的网络收藏夹
学习永远不晚

html5支不支持离线应用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

html5支不支持离线应用

本篇内容介绍了“html5支不支持离线应用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

html5支持离线应用。离线应用是html5新增的特性,利用本地缓存机制,使得用户可以在网页或应用在没有网络的情况下依然可以使用。为了能够让Web应用程序在离线状态的时候也能正常工作,必须把所有构成Web应用程序的资源文件,诸如HTML文件,CSS文件,JavaScript脚本文件放在本地缓存中,这样当服务器没有和网络连接时,也可以利用本地缓存中的资源文件来正常运行应用程序。

本教程操作环境:windows7系统、HTML5版、Dell G3电脑。

HTML5新增了离线应用,利用本地缓存机制,离线应用使得我们可以在网页或应用在没有网络的情况下依然可以使用。当客户端本地与web应用程序的服务器没有建立连接时,也能正常在客户端本地使用该web应用程序进行有关操作。

为了能够让Web应用程序在离线状态的时候也能正常工作,必须把所有构成Web应用程序的资源文件,诸如HTML文件,CSS文件,JavaScript脚本文件放在本地缓存中,当服务器没有和网络连接时,也可以利用本地缓存中的资源文件来正常运行Web应用程序。

离线应用的使用需要以下几个步骤:

  • 离线检测(确定是否联网)

  • 访问一定的资源

  • 有一块本地空间用于保存数据(无论是否上网都不妨碍读写)

使用HTML5离线web应用

1、检查浏览器的支持情况的方法

  if(window.applicationCache){
        //浏览器支持离线应用
  }

2、关于描述文件
描述文件用来列出需要缓存和不需要缓存的资源,以备离线时使用。
描述文件的扩展名以前用.manifest,现在推荐使用.appcache,并且描述文件需要配置正确的MIME-type,即"text/cache-manifest",必须在web服务器上进行配置(文件编码必须是UTF-8)。不同的服务器有不同的配置方法,具体这里不详述。

首行必须以以下字符串开始

    CACHE MANIFEST

剩下的就是要缓存的文件的URL,一行一个(相对URL是相对于清单文件而言的,不是相对于文件)

    #以“#”开头的是注释
    common.css
    common.js

这样这个文件中列举的所有的文件都会被缓存

在清单中,可以使用特殊的区域头来标识头信息之后的清单项的类型,上面的最简单的缓存属于"CACHE:"区域。
像这样

    #该头信息之后的内容需要缓存    CACHE:
    common.css
    connom.js

以"NETWORK:"开头的区域列举的文件,总是从线上获取,不缓存

NETWORK:头信息支持通配符"*",表示任何未明确列举的资源,都将通过网络加载

    #该头信息之后的内容不需要缓存,总是从线上获取
    NETWORK:
    a.css
    #表示以name开头的资源都不要缓存
    name/

以"FALLBACK:"开头的区域中的内容,提供了获取不到缓存资源时的备选资源路径
该区域中的内容,每一行包含两个URL(第一个URL是一个前缀,任何匹配的资源都不被缓存,第二个URL表示需要被缓存的资源)

    FALLBACK:
    name/  example.html

一个清单可以有任意多个区域,且位置没有限制。

3、搭建离线应用程序
假设我们要构建一个包含css,js,html的单页应用,同时要为这个单页应用添加离线支持。

要将描述文件与页面关联起来,需要使用html标签的manifest特性指定描述文件的路径

    <html manifest='./offline.appcche'>

开发离线应用的第一步就是检测设备是否离线

  • HTML5新增了navigator.onLine属性
    当该属性为true的时候表示联网,值为false的时候,表示离线

  if(navigator.onLine){      //联网  }else{      //离线  }

** 注:IE6及以上浏览器及其他标准浏览器都支持这个属性 **

  • online事件(IE9+浏览器支持)

当网络从离线变为在线的时候触发该事件,在window上触发该事件,不需要刷新

 window.online = function(){        //需要触发的事件    }
  • offline事件(IE9+浏览器支持)
    当网络从在线变为离线的时候触发该事件,和online事件一样,在window上触发该事件,不需要刷新

window.offline = function(){      //需要触发的事件  }

应用缓存

应用缓存(Application Cache)是从浏览器的缓存中分出来的一块缓存区(大小根据具体浏览器而定,一般是5M)

应用缓存和网页缓存的区别:

  • 应用缓存为整个web应用程序服务,网页缓存服务于单个网页

  • 应用缓存只缓存指定页面需要的指定资源(可人为控制),任何网页都具有网页缓存(浏览器默认行为)

  • 应用缓存不会随着清除浏览器缓存而消失

  • 应用缓存不会像网页缓存那样,老数据会被最新一次的新数据替代

  • 应用缓存可以离线访问,网页缓存必须在线访问

  • 应用缓存可靠,可控,网页缓存不可控

应用缓存的优势

  • 离线浏览

  • 速度更快--已缓存资源加载更快

  • 减少负载--浏览器只从服务器下载更新过的文件

一个web应用首次下载并缓存之后,任何加载请求都优先来自于缓存,因此可以实现离线缓存。如果不需要使用离线缓存了,就需要在服务器端删除描述文件,或者删除HTML页面中的manifest属性。

一旦应用被缓存,则缓存始终不变。那么,怎样才能改变缓存

  • 用户清空应用缓存

  • manifest文件被修改

  • 使用update()方法更新缓存

如果服务器上的文件有所修改的话,那么修改描述文件中注释行的日期或者版本号是一个不错的使浏览器重新缓存文件的办法

此外,我们还可以使用HTML5提供的API来操作和更新缓存

applicationCache API

applicationCache API是一个操作应用缓存的接口。新的window.applicationCache对象可以触发一系列与缓存状态相关的事件。
这个对象有一个status属性,值为常量,表示缓存状态

  • 0:没有与页面相关的应用缓存(未缓存)

  • 1:应用缓存未得到更新(空闲)

  • 2:正在下载描述文件并检查更新(检查中)

  • 3:应用缓存正在下载描述文件中指定的资源(下载中)

  • 4:应用缓存已经更新了资源,而且所有资源都已下载完毕,可以通过swapCache()来使用了(更新就绪)

  • 5:应用缓存的描述文件不存在了,页面无法再访问应用缓存(已过期)

这个对象有以下事件,表示其状态的改变

  • 每次载入一个设置了manifest属性的HTML文件,首先会触发checking事件

  • 如果应用程序已经缓存,并且清单文件没有改动,则浏览器触发noupdate事件

  • 如果应用程序已经缓存,并且清单文件发生改动,则浏览器触发downloading事件,下载完毕后触发updateready事件

  • 如果应用程序未缓存,则downloading事件和progress事件都会触发,但是下载完成后触发cached事件而不是updateready事件

  • 如果处于离线,无法检测清单状态,则触发error事件,如果引用一个不存在的清单文件,也会触发error事件

  • 如果处于在线,应用也缓存了,但是清单文件不存在,则会触发obsolete事件,并将应用程序从缓存中清除。

一般来讲,这些事件会随着页面加载按上述顺序依次触发

update()方法

通过update()方法也可以手工干预,让应用缓存为检查更新而触发上述事件

    applicationCache.update();

update()一经调用,应用缓存就会去检查描述文件是否更新,触发checking事件,然后页面就会像刚刚加载一样,继续执行后续操作。如果触发了cached事件,则说明应用缓存已经准备就绪,不会再发生其他操作。

swapCache()方法

如果触发了updateready事件,则说明新版本的应用缓存已经可用,需要调用swapCache()方法来启用新的应用缓存。

    applicationCache.onupdateready = function(){
        applicationCache.swapCache();
    };

浏览器检查清单文件,以及更新缓存的操作是异步的,因此可能是在载入旧缓存之后进行,因此可能需要载入两次才能显示最新的内容,因此需要提示用户

    window.applicationCache.onupdateready = function(){
        var con = comfirm('有新内容可用,是否重新加载?');
        if(con){
            location.reload();
        }
    }

“html5支不支持离线应用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

html5支不支持离线应用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

ie8支不支持html5

这篇“ie8支不支持html5”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“ie8支不支持html5”文章吧。ie8不支持h
2023-07-04

safari支不支持html5

这篇文章主要介绍了safari支不支持html5的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇safari支不支持html5文章都会有所收获,下面我们一起来看看吧。safari是支持html5的;用户可以直接访
2023-07-05

Android的webview支持HTML5的离线应用功能详细配置

HTML5的离线应用功能可以使得WebApp即使在网络断开的情况下仍能正常使用,这是个非常有用的功能。近来工作中也要用到HTML5离线应用功能,由于是在Android平台上做,所以自然而然的选择Webview来解析网页。但如何使Webive
2022-06-06

手机不支持html5

手机不支持HTML5,这是一项让许多用户感到困扰的现实。HTML5是目前最流行的网页设计语言之一,它可以为网页带来各种丰富的内容和功能,有助于网页在各种设备上表现更优秀。然而,如果您使用的是老旧的手机或操作系统,则可能无法兼容HTML5。这意味着您将无法访问某些优质的网站或在线服务,或者在使用某些应用程序时会受到限制。首先,让我们了解一下HTML5的一些主要功能和好处。该技术使
2023-05-14

C++ 如何支持移动应用程序的离线功能

在 c++++ 中开发离线应用程序涉及以下步骤:1. 使用 fstream 库持久化数据;2. 使用缓存机制(例如 unordered_map)存储常见数据;3. 使用异步网络请求处理在线操作。这样可以确保应用程序即使在没有互联网连接的情况
C++ 如何支持移动应用程序的离线功能
2024-05-16

Kafka为什么不支持读写分离

本篇文章为大家展示了Kafka为什么不支持读写分离,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在 Kafka 中,生产者写入消息、消费者读取消息的操作都是与 leader 副本进行交互的,从 而实
2023-06-16

html5中video不支持的格式是什么

这篇“html5中video不支持的格式是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“html5中video不支持的格
2023-07-05

html5中video不支持的格式是哪个

html5中video不支持的格式是flv格式,支持的格式包含MP4、WebM和Ogg;在html5中,<video>元素提供了播放、暂停和音量控件来控制视频;同时<video>元素也提供了width和height属性控制视频的尺寸,如果设置的高度和宽度,所需的视频空间会在页面加载时保留。
2023-05-14

uniapp H5应用不支持定位怎么办

随着移动互联网的普遍化,基于地理位置的服务已经成为了人们生活中不可或缺的一部分。对于很多普通用户而言,地理位置服务的使用往往是建立在设备自带的GPS芯片的基础上的,因此对于有定位需求的APP来说,GPS定位技术的重要性也是不言而喻的。然而,对于使用uniapp开发的H5应用而言,却会遇到这样一个令人头疼的问题:H5页面上不支持GPS定位。那么,面对这种情况,具体该怎么办呢?首先
2023-05-14

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录