當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
commonJS — 全局操作(for Window)
生活随笔
收集整理的這篇文章主要介紹了
commonJS — 全局操作(for Window)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
for Window
github: https://github.com/laixiangran/commonJS/blob/master/src/forWindow.js
代碼
/*** Created by laixiangran on 2016/1/24* homepage:http://www.cnblogs.com/laixiangran/* for Window*/ (function() {var com = window.COM = window.COM || {};com.$W = {/*** 在window.onload前執行,相當于jq的ready()* 使用domReady.ready()將執行函數加入隊列中**/domReady: (function() {// 用于添加要執行的函數var domReady = function() {var fnArr = Array.prototype.slice.call(arguments);// 頁面如果加載完畢則直接運行if (domReady.isReady) {fnArr.forEach(function(fn) {fn();});}else {domReady.fns = fnArr;}};// 用于判定頁面是否加載完畢domReady.isReady = false;domReady.fns = [];// 執行所有在window.onload之前放入的函數domReady.fireReady = function() {if (!domReady.isReady) {if (!document.body) {return setTimeout(domReady.fireReady, 16);}domReady.isReady = true;if (domReady.fns.length) {domReady.fns.forEach(function(fn) {fn();});}}};// 開始初始化domReady函數,判定頁面的加載情況if (document.readyState === "complete") {domReady.fireReady();} else if (-[1,]) {document.addEventListener("DOMContentLoaded", function() {document.removeEventListener("DOMContentLoaded", arguments.callee, false);domReady.fireReady();}, false);} else {// 當頁面包含圖片時,onreadystatechange事件會觸發在window.onload之后,// 換言之,它只能正確地執行于頁面不包含二進制資源或非常少或者被緩存時document.attachEvent("onreadystatechange", function() {if (document.readyState == "complete") {document.detachEvent("onreadystatechange", arguments.callee);domReady.fireReady();}});(function(){if (domReady.isReady) {return;}// doScroll存在于所有標簽而不管其是否支持滾動條// 這里如果用document.documentElement.doScroll(),我們需要判定其是否位于頂層documentvar node = new Image();try {node.doScroll();node = null; // 防止IE內存泄漏}catch (e) {// javascrpt最短時鐘間隔為16ms,這里取其倍數setTimeout(arguments.callee, 64);return;}domReady.fireReady();})();}return domReady;}()),/*** requestAnimationFrame兼容性擴展,兩方面工作:* 1、把各瀏覽器前綴進行統一* 2、在瀏覽器沒有requestAnimationFrame方法時將其指向setTimeout方法* */requestAnimationFrame: (function() {var func = null;var lastTime = 0;var vendors = ["webkit", "moz"];for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {func = window[vendors[x] + "RequestAnimationFrame"];}if (!func) {func = 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;};}return func;}()),// 取消AnimationFramecancelAnimationFrame: (function() {var func = null;var vendors = ["webkit", "moz"];for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {// Webkit中此取消方法的名字變了window.cancelAnimationFrame = window[vendors[x] + "CancelAnimationFrame"] || window[vendors[x] + "CancelRequestAnimationFrame"];}if (!func) {func = function(id) {window.clearTimeout(id);};}return func;}())}; }());參考
http://www.cnblogs.com/cloudgamer/
轉載于:https://www.cnblogs.com/laixiangran/p/5174847.html
總結
以上是生活随笔為你收集整理的commonJS — 全局操作(for Window)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BZOJ-2324 营救皮卡丘
- 下一篇: 04JavaScript中函数也是对象