日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

commonJS — 全局操作(for Window)

發布時間:2024/9/5 javascript 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。