zoukankan      html  css  js  c++  java
  • HTML5提供的新功能概要

    classList:现在element加入了classList属性,用于访问其class列表,比如想要切换一个目标的css big类,则调用target.classList.toggle("big")即可

     
    storage:使用localStorage可以保存数据至本地,用于不同时间不同窗口间的通信,而sessionStorage则是临时保存数据,当关闭该页面时清空。storageEvent可以用于各个订阅事件.
    addEvent(window, 'storage', function (event) {
        if (event.key == 'storage-event-test') {
            output.innerHTML = event.newValue;
        }
    });
    history API:
    A) history.pushState(data, title [, url]):往历史记录堆栈顶部添加一条记录;data会在onpopstate事件触发时作为参数传递过去;title为页面标题,当前所有浏览器都会 忽略此参数;url为页面地址,可选,缺省为当前页地址; 
    B) history.replaceState(data, title [, url]) :更改当前的历史记录,参数同上; 
    C) history.state:用于存储以上方法的data数据,不同浏览器的读写权限不一样; 
    D) window.onpopstate:响应pushState或replaceState的调用;
    有 了这几个新的API,针对支持的浏览器,我们可以构建用户体验更好的应用了。就像Facebook相册,虽然是AJAX的方式,但用户可以直接复 制页面地址分享给好友,好友打开看到的就是AJAX加载的数据,做到了书签化。当然这里面需要做的工作远不是说的这么简单。
     
    data-set: 现在每个element可以有若干个以data开头的attribute,比如data-height可以用element.dataset.height来访问
     
    file API:在html5里,我们可以使用fileAPI来有限访问本地文件系统,构建诸如文件拖放至浏览器进行预览与上传之类的功能
     
    web socket:聊天、页游...后台可以用node.js
     
    placeholder:搜索框里显示一行提示,这个本来要用js实现的,现在简单的变成了一个attr
     
    canvas:没啥好说的,绘图
     
    video:视频,flash不再必须,不知道性能和功能怎么样
     
    content editable:通过设置一个div属性contenteditable="true",可以简单的使该区域变得可以编辑,结合localStorage,编辑文档并临时保存至本地不再是神话,但是在chrome16上进行测试发现可编辑区域中文输入法有问题,可以粘贴中文但不能直接输入...
     
    geolocation:访问你所在的地理位置哦,需要用户同意
    if (navigator.geolocation){
        navigator.geolocation.getCurrentPosition(function(position){
            alert("latitude:" + position.coords.latitude + "longitude:" + position.coords.longitude);
        },
        function(msg){
        });
    }

    postMessage:两个iframe间使用postMessage来通讯,可以同域甚至跨域

     
    drag&drop:再也不用js实现拖拽了,一句话draggable=“true”
     
    online&offline:现在window多了两个event,online和offline,用法自己琢磨吧,貌似bug还很多,可以用来让网页支持离线模式
     
    web sql:web上执行sql呗,这个需求难道来自不愿使用分层架构的web开发者?
    var db = openDatabase('foo', '1.0', 'foo', 2 * 1024);
    db.transaction(function (tx) {
      tx.executeSql('CREATE TABLE IF NOT EXISTS foo (id unique, text)');  
      tx.executeSql('INSERT INTO foo (id, text) VALUES (1, "foobar")');
      document.querySelector('#status').innerHTML = '<p>foo created and row inserted.</p>';
    });
    
    db.transaction(function (tx) {
      tx.executeSql('DROP TABLE foo');
      
      // known to fail - so should rollback the DROP statement
      tx.executeSql('INSERT INTO foo (id, text) VALUES (1, "foobar")');
    }, function (err) {
      document.querySelector('#status').innerHTML += '<p>should be rolling back caused by: <code>' + err.message + '</code></p>';
    });
    
    db.transaction(function (tx) {
      tx.executeSql('SELECT * FROM foo', [], function (tx, results) {
        document.querySelector('#status').innerHTML += '<p>found rows (should be 1): ' + results.rows.length + '</p>'; 
      }, function (tx, err) {
        document.querySelector('#status').innerHTML += '<p>failed (rollback failed): <em>' + err.message + '</em></p>';
        document.querySelector('#status').className = 'error';
      });
    });
    web worker:类似form编程中的background worker,伪多线程式的执行后台计算,不卡死前台UI。但在chrome16中测试发现初始化时仍然有一段时间界面失去响应
     
    details:使用details标签,可以由浏览器自动将其内容隐藏,而只是显示summary,前端动画可以不用js
  • 相关阅读:
    python 模块基础介绍
    python 函数基础介绍
    性能测试总结与分享材料
    徒手撸一个简单的RPC框架
    【springcloud】一文带你搞懂API网关
    一次非常有意思的sql优化经历
    MySQL数据库之互联网常用分库分表方案
    后端开发应该掌握的Redis基础
    权限管理模块设计
    基于redis的分布式锁的分析与实践
  • 原文地址:https://www.cnblogs.com/jiangdaoli/p/3022650.html
Copyright © 2011-2022 走看看