• HTML5在线状态检测和DOM Storage


    除了离线资源缓存外,html5离线应用开发还可能用到以下技术

    在线状态检测

    navigator.onLine

    navigator.onLine 属性表示当前是否在线。如果为 true, 表示在线;如果为 false, 表示离线。当网络状态发生变化时,navigator.onLine 的值也随之变化。开发者可以通过读取它的值获取网络状态。

    online/offline 事件

    当开发离线应用时,通过 navigator.onLine 获取网络状态通常是不够的。开发者还需要在网络状态发生变化时立刻得到通知,因此 HTML5 还提供了 online/offline 事件。当在线 / 离线状态切换时,online/offline 事件就会被出发。因此,开发者可以通过监听它们的 online/offline 事件来获悉网络状态。

    下面是一个实例:

    <!DOCTYPE html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>test</title>
    </head>
    
    <body>
    <script type="text/javascript">
    var updateLineStatus = function(event){
        if(navigator.onLine){
            alert('您目前在线');
        }else{
            alert('您目前离线');
        };
    };
    window.addEventListener('online', updateLineStatus, false);
    window.addEventListener('offline', updateLineStatus, false); 
    
    /*
    在这里提一下,网上看到有的文章是这样绑定online/offline事件的
    document.body.addEventListener('online', updateLineStatus, false);
    但我经过测试,在Chrome,是无法触发事件的,必须要像我上面的写法才能触发
    其他浏览器暂未测试
    */
    </script>
    </body>
    </html>

    DOM Storage

    DOM Storage 分为两类:sessionStorage 和 localStorage。它们就一个地方不同,sessionStorage数据的存储仅特定于某个会话中,也就是说数据只保持到浏览器关闭,当浏览器关闭后重新打开这个页面时, 之前的存储已经被清除。而 localStorage 是一个持久化的存储,它并不局限于会话。

    DOM Storage 的常用方法(sessionStorage 和 localStorage 通用):

    getItem(key);  //获取信息

    setItem(key, value);  //设置信息

    removeItem(key);  //删除信息

    下面是看一个例子:

    <!DOCTYPE HTML> 
    <html> 
    <body> 
    <script> 
    // 在 sessionStorage 中定义'userName'变量
    sessionStorage.setItem('userName', 'developerworks');       
    // 访问'userName'变量
    alert("Your user is: " + sessionStorage.getItem('userName')); 
    // 最后删除'userName'
    sessionStorage.removeItem('userName');                       
    </script> 
    </body> 
    </html>




  • 相关阅读:
    [Effective C++ --009]确定对象被使用前已先被初始化
    [Effective C++ --008]别让异常逃离析构函数
    [Effective C++ --007]为多态基类声明virtual析构函数
    [Effective C++ --006]若不能使用编译器自动生成的函数,就该明确拒绝
    [Effective C++ --005]了解C++默默编写并调用哪些函数
    [000]socket通信--server和client实现的简单例子
    [014]模板-模板实参推导
    [013]模板-非类型模板参数
    [012]泛型--lambda表达式捕获
    U3d keyCode值对应的按键
  • 原文地址:https://www.cnblogs.com/czf-zone/p/3603915.html
Copyright © 2020-2023  润新知