共计 8 篇文章

javascript动态改变css3的animation

当需要在animation下动态计算keyframe水平或垂直方向的位移则比transition要麻烦许多,而且有诸多坑等着我们去踩 动态改变keyframe 通过javascript动态改变animation的keyframe比较麻烦,造成此问题的原因也是受限于CSSOM的API,特别是定义了多个帧的frame时,js基本无法去在运行时动态改变,只能通过重写cssRule来实现 function findKeyframesRule(animName) { var rule; var ss = document.styleSheets; for (var i = 0; i < ss.length; ++i) ...

深入实现Promise A+规范

Promise对目前的前端开发者来说已经是必须去了解甚至掌握的一个东西了,ES6规范中甚至定义了原生的Promise对象,对于它到底是什么的问题请参考这篇文章Promise基础 因为最初Promise的概念提出的时候,一群人为了规范它,产生了一个叫Promise A的规范,而本文要说的是Promise A+,没错多了一个加号,说明是有不一样的,详细的规范细节请点击Promise/A+,该规范是对 Promise/A 规范的补充和修改,它出现的目的是为了统一异步编程中的接口,本文会就结合规范来一步步实现Promise A+代码 Promise实现的几个重点 要保证then方法回调的时序,即第一个promise兑现的时候,后面链式调用的then方法参数回调依次调用,但同时这些方法又不能在执行then方法的时候立即执行, ...

如何编写高效的js代码(6)

hasOwnProperty和for...in hasOwnProperty 是 JavaScript 中唯一一个处理属性但是不查找原型链的函数 而for..in语句是用来查找对象属性时遍历原型链上的所有属性(for in 循环不会遍历那些 enumerable 设置为 false 的属性;比如数组的 length 属性) 一般我们会用for...in循环来遍历某个对象中的所有自定义属性,就像操作字典一样,而for...in又会去查找原型链,如果你在原型链上加入了一个可以被枚举的(enumerable 设置为 ...

如何编写高效的js代码(5)

了解prototype,getPrototypeOf和proto的不同 C.prototype是用来建立与用new C()生成的对象实例的原型关系 Object.getPrototypeOf(obj)是ES5用来获取某个对象原型的方法 obj._proto_是某些浏览器获取某个对象原型的方式,该属性并未纳入到标准中 拿代码来举例 function Foo(name, passwordHash) { this.name = name; this.passwordHash = passwordHash; } Foo. ...

PJAX和html5 history api

什么是PJAX PJAX其实是一组技术的简称,即HTML5的pushState+ajax,实现的效果是无刷新的改变页面某个部分的内容(ajax),同时地址栏URL又能随之改变(HTML5 push State) 访问github的时候当查看某个文件的源码的时候发现其实整个页面没有刷新而URL改变了其实也是用到了PJAX,还有如网易云音乐等 为什么会产生PJAX 为了更好的用户体验,URL能改变同时页面又能局部刷新,即所谓的单页面应用single page application 为了能让ajax被搜索引擎抓取,有利于SEO 如何实现PJAX 其实就是利用html5的history api和普通的ajax实现了 history api Window. ...