这篇文章主要讲的是HTML5的一些新特性和相应的探索。
HTML5语义化 不知道大家有没有这么一个习惯,在参加面试前会先提前查看相应公司的网站,如果他们家连官网都没有,那建议就不要去了。要么是太垃圾了,要么是这家公司非常需要你的帮助。
打开网站首页,我会迫不及待的F12查看页面元素。如果当我看了所有的文本元素除了div还是div的话,我理所当然的认为逼格太TM low了,我不管你是不是markdown生成与否,首先这个网站的首页就能体现出公司的前端水平。
新时代的HTML页面应该有nav,section,article等等新出现的标签,之所以会有这些标签,是因为他们都非常的语义化,不仅工程师能快速阅读,也更有利于SEO。如果你还需要考虑到神奇的IE,那就需要加上一个html5.shiv.js .
HTML5存储 由于HTML4时代Cookie的大小、格式、存储数据格式等限制,网站应用如果想在浏览器端存储用户的部分信息,那么只能借助于Cookie。但是Cookie的限制较多,比如cookie最多只能有4k,每个网站只能存放30或者50个cookie,但是随着网站的复杂性升级,HTML5存储是大势所趋。HTML5通过JS的新的API就能直接存储大量的数据到客户端浏览器,而且支持复杂的本地数据库,让JS更有效率
先说说cookie的一些用法吧1 2 3 4 5 6 7 8 9 10 // 设置cookie $.cookie("example" , "foo" ); // Sample 1  $.cookie("example" , "foo" , { expires: 7  }); // Sample 2  $.cookie("example" , "foo" , { path: '/admin' , expires: 7  }); // Sample 3  $.cookie("basket-data" , JSON.stringify($("#ArticlesHolder" ).data())); // 获取cookie $.cookie("example" ); $("#ArticlesHolder" ).data(JSON.parse($.cookie("basket-data" ))); // 删除cookie $.removeCookie("example" ); 
cookie普及的程度也是蛮高的,要完全的停用也是需要一段时间的。毕竟每一项技术都有它存在的理由吧,你可以在这里继续研究 
永久性的本地存储(localStorage) localStorage是HTML5本地存储的API,使用键值对的方式进行存取数据,存取的数据只能是字符串。不同浏览器对该API支持情况有所差异,如使用方法、最大存储空间等。它可以长期存储数据,没有时间限制。 首先可以先检测一下浏览器的支持情况。1 2 3 4 5 if (!!window .localStorage){    console .log("bingo" ); }else {     console .log("您的浏览器不支持localStorage特性,请更新您的浏览器!" ); } 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 var  jsonObj = {"id" : 123 , "name" : "darcy" , "attr" : "hello" };function  setJson ( ) {    localStorage.setItem("json" , JSON .stringify(jsonObj)); } function  getJson ( ) {    var  v = JSON .parse(localStorage.getItem("json" ));     console .log(v); } function  listAllData ( ) {    var  list = [];     for  (var  i=0 ; i<localStorage.length; i++ ){         var  key = localStorage.key(i);         var  value = localStorage.getItem(key);         list.push({"key" :key, "value" :value});     }     return  list; }; showData(); function  showData ( ) {    var  data = listAllData();     var  html = "" ;     for  (var  i=0 ; i<data.length; i++){         html += data[i].key + "="  + data[i].value + "<button onclick=\"del('" + data[i].key +"')\">删除</button><br />" ;     }     document .querySelector("#div" ).innerHTML = html; }; function  del (key ) {    localStorage.removeItem(key);     showData(); }; 
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 var  src = "Just-for-fun/images/tgl_check.png" ;function  cacheExternalImage (url ) {    var  img = new  Image,     src = url,     cvs = document .createElement('canvas' ),     ctx = cvs.getContext('2d' );     img.crossOrigin = "Anonymous" ;     img.onload = function ( )  {            }     img.src = src;     if  ( img.complete || img.complete === undefined  ) {         img.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==" ;         img.src = src;     }     return  img; } function  set (key ) {    var  img = document .createElement("img" );          img.addEventListener("load" , function ( ) {         var  imgCanvas = document .createElement("canvas" ),             imgContext = imgCanvas.getContext("2d" );         imgCanvas.width = this .width;         imgCanvas.height = this .height;                  imgContext.drawImage(this , 0 , 0 , this .width, this .height);         var  imgAsDataURL = imgCanvas.toDataURL("image/png" );         try {             localStorage.setItem(key, imgAsDataURL);         }catch (e){             console .log("Storage failed: "  + e)         }     }, false );     img.src = src;     img.crossOrigin = "Anonymous" ; } function  get (key ) {    var  srcStr = localStorage.getItem(key);     var  imgObj = document .createElement('img' );     imgObj.src = srcStr;     document .body.appendChild(imgObj); } 
 
会话级别的本地存储(sessionStorage) 使用注意事项 
不要存放敏感信息。 
选择合适的域存放合适的信息,比如一次过期的信息就放在sessionstorage中。 
对存放在其中的信息最好能够在服务端进行加密。 
 
参考资料https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage http://www.douban.com/note/510331750/