H5新特性

1.全屏化(FullScreen)

1.1进入全屏

elem.webkitRequestFullScreen(); // 针对 webkit 内核的浏览器(Chrome / Safari / Opera)
title.mozRequestFullScreen(); // 火狐 (Firfox)

1.2退出全屏

document.webkitRequestFullScreen();

1.3注意

  • 全屏操作需要用户来处理,代码从上向下执行,无法触发效果
  • 退出全屏不能使用当前元素调用方法,而是使用 document 对象

2.针对动画效果的API(AnimationFrame)

2.1优势:

  • 浏览器可以优化并行的动画动作,更合理的重新排列动作序列,呈现出更流畅的动画效果。
  • 如果在一个浏览器标签页里运行一个动画,当这个标签页不可见时,浏览器会暂停它,这会减少CPU,内存的压力,节省电池电量。

2.2开启及取消

requestAnimationFrame()
cancelAnimationFrame()

2.3注意

setInterval、setTimeout、requestAnimationFrame在被赋值给变量后,console.log出来为顺序的数字,且不区分三者的区别
所以,在取消三者时,可以直接取消,方法如下

   for (var i = 1; i <= 4; i++) {
        clearInterval(i);
        clearTimeout(i);
        cancelAnimationFrame(i);
    }

3.本地存储

3.1区别:

  • cookie: 存储数据量小,可以设置存储时间,到期自动删除
  • localStorage: 将数据保存到设备上,可以实现永久存储,需要主动删除
  • sessionStorage: 将数据临时存储,离开当前页面就删除

3.2cookie

大多数浏览器支持最大为4k的cookie,且只允许存储20个cookie

3.3webStorage方法

  • setItem()保存
  • getItem()取出
  • removeItem() 删除
  • clear()清除

代码实例如下

保存
sessionStorage.setItem('key1', 'value1');
sessionStorage.setItem('key2', JSON.stringify([1, 2, 3, 4]));
sessionStorage.setItem('key3', JSON.stringify({ name: "xiaoming" }));
取出
sessionStorage.getItem('key3');
删除
sessionStorage.removeItem('key2');
清除
sessionStorage.clear();
设置
localStorage.setItem('key1', 'value1');

4.离线缓存manifest

4.1介绍

  • manifest是一个同名后缀为manifest的文件,在文件中定义那些需要缓存的文件,支持manifest的浏览器,将会按照manifest文件的规则进而保存数据,从而在没有网络的情况下,也可以访问
  • 当第一次正确配置app cache后,再次访问该应用时,浏览器会首先检查manifest是否有变动,如果有变动,则把相应的变化更新下来,同时改变浏览器的app cache,如果没有变动,就会直接把app cache的资源返回

4.2特点

  • 离线浏览:用户可以在离线状态浏览网站旧数据
  • 更快的速度:因为数据存储在本地,所以速度会更快
  • 减轻服务器的负载:浏览器只会下载在服务器上发生改变的资源

4.3使用

  • 在html标签中增加一个manifest属性,用来指定当前页面的manifest文件
  • 创建一个和html同名的manifest文件,然后给index.html文件添加属性 <html manifest="index.manifest">
  • html文件设置完成,后面去操作manifest文件

4.4manifest文件的编写--典型写法

CACHE MANIFEST 以#号开头为注释

#version 1.3
   css/index.css
   js/index.js
   index.html

4.5如何更新缓存

  • 更新manifest文件
    给manifest添加或删除文件,都可以更新缓存
    如果我们更改了js,而没有新增或删除,前面例子中的版本号,可以很好的用来更新manifest文件
  • 通过javascript操作
    HTML5中引入JS操作离线缓存的方法 window.applicationCache.update();
  • 清除浏览器缓存
    如果用户清除了浏览器缓存,会重新下载文件

5.地理位置

5.1Navigator 对象

  • 包含的属性描述了正在使用的浏览器
  • 实现了 JavaScript 的浏览器支持这个对象。
  • 可以用 Window 对象的 navigator 属性来引用它。

5.2geolocation 对象

  • 地理位置 API 通过 navigator.geolocation 提供
  • 如果该对象存在,那么地理位置服务可用。
if ("geolocation" in navigator) {
  /* 地理位置服务可用 */
} else {
  /* 地理位置服务不可用 */
}

5.3获取当前定位

  • getCurrentPosition() 获取当前定位位置。当定位被确定后,定义的回调函数就会被执行。
  • 第一个参数为成功时回调
  • 第二个回调函数,当有错误时会被执行。
  • 第三个参数也是可选的,您可以通过该对象参数设定最长可接受的定位返回时间、等待请求的时间和是否获取高精度定位。

代码示例如下

window.navigator.geolocation.getCurrentPosition(function (info) { // 成功的回调
    console.log('successed');
    console.log(info);
}, function (info) { // 失败的回调
    console.log('error');
    console.log(info);
}, { // 定位选项
});

6.工作线程web worker

6.1含义

  • 一般脚本在页面中被执行脚本时,页面的状态是不可响应的,直到脚本已完成。
  • 而web worker 运行在后台的javascript,独立于其他脚本,不会影响页面的性能,页面可响应

6.2创建 web worker 之前,请检测用户的浏览器是否支持它:

// 检查是否可用
if (typeof Worker !== 'undefined') {
    console.log('可用');
    // 创建对象
    var w = new Worker('./js/worker.js');
    // 接收worker.js消息的方法
    w.onmessage = function (e) {
        console.log(e.data);
        $('title').innerHTML = e.data;
    };
} else {
    console.log('不可用');
}

6.3创建 web worker

  • 将与web worker相关的代码都放在一个独立的JavaScript文件中。
  • 父线程通过在Worker构造函数中指定一个JavaScript文件的链接来创建一个新的worker,异步加载并执行该JavaScript文件
 var w = new Worker('./js/worker.js');

7.模板引擎template

7.1含义

  • 根据数据,快速生成HTML代码片段,插入到HTML结构中显示
  • 首先编写结构,可以将HTML和JavaScript混写,然后赋值数据,就可以生成HTML代码片段
  • http://wangxiao.github.io/BaiduTemplate/

7.2请演示baiduTemplate.js模板引擎?

代码示例如下

<body>
       <div id="result"></div>
       <!-- 编写模板 -->
       <script id="header" type="text/html">
             <h1>姓名: <%=name%></h1>
             <h2>年龄:<%=age%> </h2>
             <ul>
             <%for (var i = 0; i < foods.length; i++) {%>
                   <li><%=foods[i]%></li>
             <%}%>
             </ul>
        </script>
       <script type="text/javascript">
             // 数据
             var data = {
                   name: '红烧肉',
                   age: 13.5,
                   foods: [ '蒸羊羔', '蒸熊掌', '一盆米饭我够了' ]
              };
             // 生成html代码片段
             var html = baidu.template('header', data);
             document.getElementById("result").innerHTML = html;
       </script>
</body>

7.3和baiduTemplate相似模板引擎

例如,artTemplate.js,语法相似 http://www.jq22.com/jquery-info1097

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341

推荐阅读更多精彩内容