返回顶部
首页 > 资讯 > 前端开发 > html >html5支不支持离线应用
  • 872
分享到

html5支不支持离线应用

2024-04-02 19:04:59 872人浏览 薄情痞子
摘要

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

--结束END--

本文标题: html5支不支持离线应用

本文链接: https://lsjlt.com/news/98396.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • html5支不支持离线应用
    本篇内容介绍了“html5支不支持离线应用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • safari支不支持html5
    这篇文章主要介绍了safari支不支持html5的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇safari支不支持html5文章都会有所收获,下面我们一起来看看吧。safari是支持html5的;用户可以直接访...
    99+
    2023-07-05
  • ie8支不支持html5
    这篇“ie8支不支持html5”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“ie8支不支持html5”文章吧。ie8不支持h...
    99+
    2023-07-04
  • html5支不支持wmv格式
    今天小编给大家分享一下html5支不支持wmv格式的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一...
    99+
    2024-04-02
  • html5中vedio支不支持rtmp
    这篇“html5中vedio支不支持rtmp”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“...
    99+
    2024-04-02
  • html5支不支持flv文件
    这篇文章主要介绍了html5支不支持flv文件的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇html5支不支持flv文件文章都会有所收获,下面我们一起来看看吧。 ...
    99+
    2024-04-02
  • acronym标签html5支不支持
    这篇文章主要介绍了acronym标签html5支不支持的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇acronym标签html5支不支持文章都会有所收获,下面我们一起来看看吧。...
    99+
    2024-04-02
  • Android的webview支持HTML5的离线应用功能详细配置
    HTML5的离线应用功能可以使得WebApp即使在网络断开的情况下仍能正常使用,这是个非常有用的功能。近来工作中也要用到HTML5离线应用功能,由于是在Android平台上做,...
    99+
    2022-06-06
    HTML webview HTML5 Android
  • html5支不支持boolean值属性
    本篇内容介绍了“html5支不支持boolean值属性”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • 手机不支持html5
    手机不支持HTML5,这是一项让许多用户感到困扰的现实。HTML5是目前最流行的网页设计语言之一,它可以为网页带来各种丰富的内容和功能,有助于网页在各种设备上表现更优秀。然而,如果您使用的是老旧的手机或操作系统,则可能无法兼容HTML5。这...
    99+
    2023-05-14
  • HTML5不支持frameset怎么办
    这篇文章主要介绍HTML5不支持frameset怎么办,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!解决方法如下:第一种使用iframe,但是目前使用iframe的人已经越来越少了,...
    99+
    2024-04-02
  • html5不支持哪些元素
    这篇文章主要介绍“html5不支持哪些元素”,在日常操作中,相信很多人在html5不支持哪些元素问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”html5不支持哪些元素”的疑惑...
    99+
    2024-04-02
  • C++ 如何支持移动应用程序的离线功能
    在 c++++ 中开发离线应用程序涉及以下步骤:1. 使用 fstream 库持久化数据;2. 使用缓存机制(例如 unordered_map)存储常见数据;3. 使用异步网络请求处理在...
    99+
    2024-05-16
    移动应用程序 离线功能 c++
  • safari支持html5吗
    本教程操作环境:Windows10系统、HTML5版、DELL G3电脑safari支持html5吗?safari默认是支持html5的。如果你是用户,直接就可以访问html5标准制作的页面,如果是开发者,那么直接就可以使用html5标签。...
    99+
    2023-05-14
    html5 safari
  • ie8支持html5吗
    本教程操作环境:Windows10系统、HTML5版、Dell G3电脑。ie8支持html5吗不支持。但是让IE(ie6/ie7/ie8)支持HTML5元素,我们可以在HTML头部添加以下JavaScript,这是一个简单的documen...
    99+
    2023-05-14
    ie8 html5
  • navicat支不支持oracle
    这篇文章主要介绍了navicat支不支持oracle,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。navicat支持oracle。Navicat...
    99+
    2024-04-02
  • navicat支不支持mongodb
    这篇文章将为大家详细讲解有关navicat支不支持mongodb,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Navicat for MariaDB 为 MariaDB数...
    99+
    2024-04-02
  • vuejs支不支持ie8
    这篇文章主要介绍了vuejs支不支持ie8,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 vuejs不支持ie8...
    99+
    2024-04-02
  • css3支不支持rgba
    这篇文章主要介绍“css3支不支持rgba”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“css3支不支持rgba”文章能帮助大家解决问题。 ...
    99+
    2024-04-02
  • vue支不支持ajax
    这篇“vue支不支持ajax”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue支不支持a...
    99+
    2024-04-02
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作