requestAnimationFrame 兼容不同浏览器
2017-02-15 17:31
363 查看
简单兼容:
但是呢,并不是所有设备的绘制时间间隔是
window.requestAnimFrame = (function(){ return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function( callback ){ window.setTimeout(callback, 1000 / 60); }; })();
但是呢,并不是所有设备的绘制时间间隔是
1000/60 ms, 以及上面并木有cancel相关方法,所以,就有下面这份更全面的兼容方法:
(function() { var lastTime = 0; var vendors = ['webkit', 'moz']; for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) { window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame']; window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || // Webkit中此取消方法的名字变了 window[vendors[x] + 'CancelRequestAnimationFrame']; } if (!window.requestAnimationFrame) { window.requestAnimationFrame = function(callback, element) { var currTime = new Date().getTime(); var timeToCall = Math.max(0, 16.7 - (currTime - lastTime)); var id = window.setTimeout(function() { callback(currTime + timeToCall); }, timeToCall); lastTime = currTime + timeToCall; return id; }; } if (!window.cancelAnimationFrame) { window.cancelAnimationFrame = function(id) { clearTimeout(id); }; } }());
相关文章推荐
- 初步使用Arduino
- Vue 爬坑之路(一)—— 使用 vue-cli 搭建项目
- 监听 textfield的输入
- textfield,首字符不能输入“0”或者“.”,控制小数点后面的分位数以及不让小数点出现两次
- QML 和QtQuick2
- LeetCode387 First Unique Character in a String
- Qt容器类(总结)(新发现的QQueue和QStack,注意全都是泛型)
- php中require(),include(),require_once()和include_once()区别
- 列表分页切换无刷新
- Could Not Get the Value for Parameter compilerId for Plugin Execution
- BlockingQueue概述
- 五,iOS在UITableView中使用输入框和验证码按钮的实现
- serialVersionUID 对序列化,反序列化的影响
- Android设计模式——Builder模式
- ubuntu下qt4.8.6运行ui界面不显示中文,原因是qtconfig默认的字体不支持中文
- iOS中让UIButton上文字居右显示
- Vue 爬坑之路(六)—— 使用 Vuex + axios 发送请求
- UIPickerView注意点
- UE4 Pak文件操作
- Android UiAutomator UiDevice API