动画优化、客户端存储、历史记录、worker

一、requestAnimationFrame

1、requestAnimationFrame怎么用?

设置关键帧动画效果,注重关键帧执行的情况,用法与setTimeout一样

2、requestAnimationFrame与setTimeout的区别?  (执行时间,setTimeout是用户设置的时间 ,requestAnimationFrame看起来实现动画效果更流畅)

   <style>
       .demo{
          width:100px;
          height:100px;
          background:red;
          position:absolute;
          left:0;
       }
   </style>
</head>
    <div class ="demo"></div>
<body>
   <script>
      var demo = document.getElementsByClassName(‘demo‘)[0];
      function move () {
         demo.style.left = demo.offsetLeft + 150 + ‘px‘;
         var timer = requestAnimationFrame(move);
         if(demo.offsetLeft > 800){
            cancelAnimationFrame(timer);
         }
      }
      move();
   </script>

requestAnimationFrame

1、页面刷新前执行一次

2、1000ms 60fps -> 16ms   (每16ms执行一次)

3、cancelAnimationFrame  (取消动画)

4、用法和 setTimeout类似

5、兼容性  (不好)

requestAnimationFrame(f)

cancelAnimationFrame(id)

requestAnimationFrame兼容性

requestAnimationFrame

         window.requestAnimFrame = (function () {
            return window.requestAnimationFrame ||
               window.webkitRequestAnimationFrame ||
               window.mozRequestAnimationFrame ||
               function (callback) {
                  window.setTimeout(callback, 1000 / 60);
               };
         })();

cancelAnimationFrame

      window.cancelAnimFrame = (function () {
         return window.cancelAnimationFrame ||
            window.webkitCancelAnimationFrame ||
            window.mozCancelAnimationFrame ||
            function (id) {
               window.clearTimeout(id);
            };
      })();

二、客户端存储

客户端存储方法

1.Storage: 不会传到服务器

2.Cookie:

(cookie数据会传到服务器,影响性能,且存储量小)

storage

1、localStroage

2、sessionStroage

存储方式:

localStorage.name = ‘aimee‘

localStorage.info = JSON.stringify({name:‘aimee,company: ‘duyi’})  (localStroage隐式类型转换,转换成字符串,用JSON.stringify转换成json字符串)

读取方式:

localStrorage.name

JSON.parse(localStorage.info)    (转换成对象)

二者区别:

1、存储有效期

localStorage->永久的,除非手动删除

sessionStorage->临时,窗口关闭就没有了

2、存储作用域

localStorage->文档源限制  (同域下)

sessionStorage->文档源限制+窗口

api

1. setItem(name,val) 设置属性值

2. getItem(name) 获得属性值

3. removeItem(name) 移除属性

4. clear() 清除属性

2.cookie

存储信息到用户的设备上,数据量较小 4k

navigator.cookieEnabled

检测是否启用了cookie

cookie

1.设置cookie值:

document.cookie = “name=aimee”

(每次只能设置一个值,因为浏览器会认为后面的键值对是这个cookie的属性)

2.获得cookie值:

document.cookie

不建议出现分号,逗号,空格的奇怪的符号

encodeURIComponent()

decodeURIComponent()

Cookie封装函数

      function getCookie(name) {
         var name = name + "=";
         var ca = document.cookie.split(‘;‘);
         for (var i = 0; i < ca.length; i++) {
            var c = ca[i];
            while (c.charAt(0) == ‘ ‘) c = c.substring(1);
            if (c.indexOf(name) != -1) return c.substring(name.length, c.length);
         }
         return "";
      }

Cookie的存储周期

1.设置cookie存储期限

document.cookie = “name=scott;max-age=1000”;

单位 秒

2.expires 当前时间加上保存时间

var timestamp = (new Date()).getTime() + 10000;

var expires = new Date(timestamp).toGMTString();

document.cookie = “name=scott;expires=“+expires;

3.domain

4.path

cookie

1.删除cookie max-age=0

需要带上键值对

document.cookie = ‘name=scott;max-age=0’;

2.expires 设置为之前的时间

document.cookie = ‘name=scott;expires= …’;

Cookie和storage的区别

三、历史记录

History对象方法

1、history.back()

2、history.forward()

3、history.go(n)

HTML5中新增的方法

通过修改hash和hashchange事件来实现历史纪录管理

1、pushState

history.pushState(state, title, url); 添加一条历史记录

2、replaceState

history.replaceState(state, title, url); 替换当前的历史记录

参数:

state:一个与指定网址相关的状态对象,popstate事件触发时,该对象会传入回调函数中。如果不需要这个对象,此处可以填null。

title:新页面的标题,但是所有浏览器目前都忽略这个值,因此这里可以填null。

url:新的网址,必须与当前页面处在同一个域。浏览器的地址栏将显示这个网址。

History上新增的事件

1、popstate 事件

历史记录发生改变时触发

调用history.pushState()或者history.replaceState()不会触发popstate事件

   <script>
       history.pushState({
          name:‘abc‘,
          }, null, ‘#index‘);
       window.addEventListener(‘popstate‘,function(e){
          console.log(e);
       })
   </script>

2、hashchange事件

当页面的hash值改变的时候触发,常用于构建单页面应用

原文地址:https://www.cnblogs.com/tianya-guoke/p/10393223.html

时间: 2024-11-13 08:08:40

动画优化、客户端存储、历史记录、worker的相关文章

第十八章:客户端存储

写在本章开始前: 第十七章作为独立的一章,涉及到jQuery的方方面面,是篇幅很长的一章.为了更新客户端存储(本章),特跳过十七章.(十七章将在本章完成后继续更新,望大家关注.) web应用允许使用浏览器提供的API实现将数据存储在用户电脑上.这种客户端存储相当于赋予了web浏览器记忆功能.比方说,web应用就可以用这些方式来“记住”用户的偏好甚至是用户的所有状态信息,以便准确地“回忆”起用户上一次访问的位置.客户端存储遵循“同源策略”,因此不同站点的页面是无法读取对于存储的数据.而同一站点的不

《Javascript权威指南》学习笔记之十八:BOM新成就(1)--客户端存储数据(Web SQL DataBase实现)

使用本地存储和会话存储可以实现简单的对象持久化,可以对简单的键值对或对象进行存储.但是,对于比较复杂的关系数据进行处理时,就要用Web SQL Database.浏览器对Web SQL Database的支持情况如图: 一.如何使用Web SQL Database <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-t

Web - 客户端存储的几种方式

客户端存储主要方便一些APP离线使用.今天就来说说客户端存储的方法有多少? 说在最前面的一句:所有的客户端存储都有一个原则:读写的数据必须要同域 1 Cookie Cookie是一项很老的技术的,就是因为它老,所以兼容性还是不错的.常见的JS操作Cookie的代码如下: function setCookie(c_name,value,expiredays) { var exdate=new Date() exdate.setDate(exdate.getDate()+expiredays) do

客户端存储之HTML5 web存储

最近在学习如何实现客户端存储,这篇文章将主要分析H5的web storage以及它与传统的cookie之间的区别. web存储与cookie的区别以及优势: 1.cookie只适合存储少量文本数据,而web存储可存储大量数据 2.以cookie存储的数据,无论服务器端是否需要,每次HTTP请求时,都会将cookie数据传送到服务端,有时会造成带宽浪费,而web storage 中的数据只会存储在本地 3.web storage有更加丰富易用的接口,比如setItem().getItem().re

监控SharePoint效率之(六) –优化内容存储和访问

在用之前提到的工具,消除了SharePoint环境上所有问题之后,要想让SharePoint系统响应快,有两个途径. 一是增加更多的服务器,使用更好的硬件,这个无疑成本会很高.另外一种方法就是优化现有的结构,使已经存在的硬件的到充分的利用. SharePoint系统在一些典型情况下,不需要做额外的优化,就能有很好的响应速度. 比如用户上传的都是普通的office/PDF文件,站点是针对组织内部使用的intranet,用户数量也不是特别多. 但是如果是一些特定的情况呢? 比如,用户上传了很多很大的

【Java编码准则】の #02不要在客户端存储未加密的敏感信息

当构建CS模式的应用程序时,在客户端侧存储敏感信息(例如用户私要信息)可能导致非授权的信息泄漏. 对于Web应用程序来说,最常见的泄漏问题是在客户端使用cookies存放服务器端获取的敏感信息.Cookies是由web服务器创建的,它具有一个指定的有效时间,保存在客户端.当客户端连接上服务器端时,客户端使用cookies中存储的信息向服务器端进行认证,通过后服务器端返回敏感信息. 在XSS攻击下,Cookies不能保证敏感信息的安全.无论是通过XSS攻击,还是直接对客户端的攻击,攻击者一旦获取到

HTML5学习笔记之客户端存储数据方法:localStorage(),sessionStorage()

HTML5提供了两种在客户端存储数据的新方法: localStorage():没有时间限制的数据存储 sessionStorage():针对一个session的数据存储 下面的一个例子用localStroage()方法对用户访问页面的次数进行计数 <script type="text/javascript"> if(localStorage.pagecount) { localStorage.pagecount=Number(localStorage.pagecount)+

H5 客户端存储(Web Storage)

HTML5 提供了两种在客户端存储数据的新方法: localStorage - 本地永久存储,下次打开浏览器数据依然存在 sessionStorage - 只存在于一个会话的数据存储,关闭浏览器数据会被清除 注意: 1)只要清除浏览器cookie,两种存储方式的数据都会被清除 2)对于不同的网站,数据存储于不同的区域,各网站只能访问其自身的数据 3)浏览器之间的数据是各自独立的(比如Firefox中使用localStorage存储一组数据,在Chrome浏览器下是无法读取的) 1.目前大部分的浏

Away3d 骨骼动画优化

很多朋友说Away3D 的骨骼数限制在32根,确切的说应该是Stage3D 的限制.在 AGAL2.0之前 VC寄存器是128个,每个vc常量寄存器最大只能容纳4位,transform占用一个4*4的矩阵,所以如果把一个transform存进vc里面,需要到4个寄存器才能存得完.这样,一根骨骼占用了4个寄存器.而vc总共是有128个.就算全部128个vc都用于计算骨骼,也只能32根骨骼.该怎么办呢? 之前在做 <狂P三国>时的解决办法是把transform减缩成一个四元素储存骨骼的旋转,然后一