zoukankan      html  css  js  c++  java
  • html5学习笔记3——高级特性

    一:Web存储

    数据以 键/值 对存在, web网页的数据只允许该网页访问使用。

    web存储有两种;

    • localStorage - 没有时间限制的数据存储,存于浏览器缓存
    • sessionStorage - 针对一个 session 的数据存储,绘画关闭就清理
    if(typeof(Storage)!=="undefined")//检查是否支持web存储
       {
       // Yes! localStorage and sessionStorage support!
       localStorage.key = value //创建内容
       localStorage.key //获取内容
       sessionStorage.key = value //创建内容
       sessionStorage.key //获取内容
       
       }
     else
       {
       // Sorry! No web storage support..
       }

    二:Web应用缓存

    HTML5 引入了应用程序缓存,这意味着 web 应用可进行缓存,并可在没有因特网连接时进行访问。

    应用程序缓存为应用带来三个优势:

    1. 离线浏览 - 用户可在应用离线时使用它们
    2. 速度 - 已缓存资源加载得更快
    3. 减少服务器负载 - 浏览器将只从服务器下载更新过或更改过的资源。

    1:启用 应用程序缓存

     <!DOCTYPE HTML>
     <html manifest="demo.appcache">
     ...
     </html> 

    2: 编写manifest

    manifest 文件是简单的文本文件:

    • CACHE MANIFEST - 在此标题下列出的文件将在首次下载后进行缓存
    • NETWORK - 在此标题下列出的文件需要与服务器的连接,且不会被缓存
    • FALLBACK - 在此标题下列出的文件规定当页面无法访问时的回退页面(比如 404 页面)
     CACHE MANIFEST
     # 2012-02-21 v1.0.0 注解
     /theme.css
     /logo.gif
     /main.js
    
     NETWORK:
     login.php
    
     FALLBACK:
     /html/ /offline.html

    3:注意

    一旦文件被缓存,则浏览器会继续展示已缓存的版本,即使您修改了服务器上的文件。为了确保浏览器更新缓存,您需要更新 manifest 文件。

    浏览器对缓存数据的容量限制可能不太一样(某些浏览器设置的限制是每个站点 5MB)

    三:异步运行脚本

    当在 HTML 页面中执行脚本时,页面的状态是不可响应的,直到脚本已完成。

    web worker 是运行在后台的 JavaScript,独立于其他脚本,不会影响页面的性能。您可以继续做任何愿意做的事情:点击、选取内容等等,而此时 web worker 在后台运行。

    //一个js文件
    
    var i=0;
    
     function timedCount()
     {
     i=i+1;
     postMessage(i);
     setTimeout("timedCount()",500);
     }
    
     timedCount();
     <script>
     var w;
    
     function startWorker()
     {
     if(typeof(Worker)!=="undefined")//检查是否支持web worker
     {
       if(typeof(w)=="undefined")
         {
         w=new Worker("demo_workers.js"); //创建一个web worker,用一个需要后台运行的js文件作为初始化参数,并运行该文件
         }
       w.onmessage = function (event) {//监听worker的执行结果
         document.getElementById("result").innerHTML=event.data;
       };
     }
     else
     {
     document.getElementById("result").innerHTML="Sorry, your browser does not support Web Workers...";
     }
     }
    
     function stopWorker() //停止运行
     { 
     w.terminate();
     }
     </script>

    四:接受服务器推送

    Server-Sent 事件指的是网页自动获取来自服务器的更新。

    以前也可能做到这一点,前提是网页不得不询问是否有可用的更新。

    而现在,通过服务器发送事件,更新能够自动到达,类似于移动App的推送一样。

    EventSource 对象用于接收服务器发送事件通知:

     if(typeof(EventSource)!=="undefined")
       {
       // Yes! Server-sent events support!
       var source=new EventSource("接收更新的页面文件");
       source.onmessage=function(event)
      {
       //每当有推送更新,则调用该事件。
       }
     else
       {
       // Sorry! No server-sent events support..
       } 

    五:web sql

    Html5数据库API是以一个独立规范形式出现,它包含三个核心方法:

    1、openDatabase:这个方法使用现有数据库或创建新数据库创建数据库对象。

    2、transaction:这个方法允许我们根据情况控制事务提交或回滚。

    3、executeSql:这个方法用于执行真实的SQL查询。

    <script type="text/javascript">
     var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024); //参数分别为:数据库名、版本号、描述、数据库大小
     var msg; 
     db.transaction(function (tx) {
       tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)'); 
       tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "foobar")'); 
       tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "logmsg")'); 
     }); 
     
     db.transaction(function (tx) {
       tx.executeSql('SELECT * FROM LOGS', [], function (tx, results) {
        var len = results.rows.length, i; 
        msg = "<p>Found rows: " + len + "</p>"; 
        document.querySelector('#status').innerHTML +=  msg;  
        for (i = 0; i < len; i++){
          msg = "<p><b>" + results.rows.item(i).log + "</b></p>"; 
          document.querySelector('#status').innerHTML +=  msg; 
        }
      }, null); 
     }); 
     </script>
  • 相关阅读:
    java实现远程开机
    windows系统设备管理器显示全部硬件
    使用pl/sql在oracle中新建表和对应序列
    mysql,oracle,sql server中的默认事务隔离级别查看,更改
    没有外网情况下linux安装mysql
    解决IntelliJ IDEA 创建Maven项目速度慢问题 DarchetypeCatalog
    vmware中linux虚拟机使用NAT模式不能连接外网解决
    idea中新建的web项目不能新建servlet
    SSH开源框架的优缺点
    配置JDK环境变量,与各步骤的意义
  • 原文地址:https://www.cnblogs.com/ygj0930/p/9246192.html
Copyright © 2011-2022 走看看