瀏覽代碼

嘤嘤嘤

ChenLiang 4 年之前
父節點
當前提交
650757de9e
共有 1 個文件被更改,包括 137 次插入109 次删除
  1. 137 109
      插件/common.js

+ 137 - 109
插件/common.js

@@ -1,35 +1,39 @@
 var comm = {
-    // 添加事件的函数
-    addEvent: function (ele, ev, fn) {
+    data: {
+        baseUrl: '',
+    },
+
+    /* ====================================================================================== */
+
+    addEvent: function (ele, ev, fn) { // 添加事件的函数
         //针对IE浏览器
-        if(ele.attachEvent){ 
-            ele.attachEvent('on'+ev,fn)
+        if (ele.attachEvent) {
+            ele.attachEvent('on' + ev, fn)
         }
         //针对FF与chrome
-        else{   
+        else {
             ele.addEventListener(ev, fn, false)
         }
     },
-    // 封装ajax
-    ajax: function (options) {
+    ajax: function (options) { // 封装ajax
         var _this = this;
         // 创建时间戳,确保每一秒的请求是不同的
-        this.format = function(){
+        this.format = function () {
             var now = new String(new Date().getTime());
-            return now.substr(0,now.length-3);
+            return now.substr(0, now.length - 3);
         }
         //格式化参数
-        this.formatParams = function(data) {
+        this.formatParams = function (data) {
             //获取地址参数
             var arr = [];
             for (var name in data) {
                 arr.push(encodeURIComponent(name) + "=" + encodeURIComponent(data[name]));
             }
-            
-            arr.push("t="+_this.format());//按分钟刷一次
+
+            arr.push("t=" + _this.format()); //按分钟刷一次
             return arr.join("&");
         }
-        
+
         //异步请求对象的完成状态
         this.done = 0;
         //传入设置
@@ -44,27 +48,28 @@ var comm = {
         //w3c标准
         if (window.XMLHttpRequest) {
             xhr = new XMLHttpRequest();
-        } 
+        }
         //兼容IE6及以下
-        else if (window.ActiveObject) { 
+        else if (window.ActiveObject) {
             xhr = new ActiveXObject('Microsoft.XMLHTTP');
         }
-        
+
         //连接 和 发送 - 第二步
         //判断是那种类型的请求
         //若是get请求
         if (options.type == "GET") {
             //参数拼接
-            if(options.url.indexOf("?")==-1) sp="?" ; else sp="&";
-        
+            if (options.url.indexOf("?") == -1) sp = "?";
+            else sp = "&";
+
             //发送请求
-            xhr.open("GET", options.url + sp + params,options.async);
+            xhr.open("GET", options.url + sp + params, options.async);
             xhr.send(null);
-        } 
+        }
         //若是post请求
         else if (options.type == "POST") {
             //发送请求
-            xhr.open("POST", options.url,options.async);
+            xhr.open("POST", options.url, options.async);
             //设置表单提交时的内容类型
             xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
             //参数配置
@@ -72,7 +77,7 @@ var comm = {
         }
 
         //接收 - 第三步
-        xhr.onreadystatechange = function() {
+        xhr.onreadystatechange = function () {
             if (xhr.readyState == 4) {
                 //状态码
                 var status = xhr.status;
@@ -81,10 +86,9 @@ var comm = {
                     //返回数据的格式
                     //json字符串
                     if (options.dataType == "json") {
-                        try{
-                            options.success && options.success(eval("("+xhr.responseText+")"));
-                        }
-                        catch(err){
+                        try {
+                            options.success && options.success(eval("(" + xhr.responseText + ")"));
+                        } catch (err) {
                             options.success && options.success(JSON.parse(xhr.responseText), xhr.responseXML);
                         }
                     }
@@ -94,7 +98,7 @@ var comm = {
                     }
                     // 改变状态为完成
                     _this.done = 1;
-                } 
+                }
                 //如果状态码表示失败时调用错误处理回调函数
                 else {
                     options.error && options.error(status);
@@ -104,104 +108,91 @@ var comm = {
             }
         }
     },
+
     /* ====================================================================================== */
 
-    // 判断一个类是否存在
-    hasClass: function (ele, cls) {
+    hasClass: function (ele, cls) { // 判断一个类是否存在
         return ele.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'))
     },
-    // 增加一个类
-    addClass: function (ele, cls) {
+    addClass: function (ele, cls) { // 增加一个类
         if (!this.hasClass(ele, cls)) ele.className = ele.className.replace(/(\s*$)/g, "") + " " + cls
     },
-    // 删除一个类
-    removeClass: function (ele, cls) {
+    removeClass: function (ele, cls) { // 删除一个类
         if (this.hasClass(ele, cls)) {
             var reg = new RegExp('(\\s|^)' + cls + '(\\s|$)');
             ele.className = ele.className.replace(reg, ' ')
         }
     },
-    // 获取某个元素的样式
-    getStyle: function (ele, attr) {
-		var res = '';
-		if (window.getComputedStyle) {
-			res = getComputedStyle(ele)[attr];
-		} else if (ele.currentStyle) {
-			res = ele.currentStyle[attr];
-		} else {
-			res = ele.style[attr];
-		}
-		// 这里返回的样式做了调整,返回必须为字符串,有盒子的样式获取像margin-left会返回纯数字(不含单位px),这样不好处理,统一变成字符串后再对返回结果用正则匹配
-		return res + '';
+    getStyle: function (ele, attr) { // 获取某个元素的样式
+        var res = '';
+        if (window.getComputedStyle) {
+            res = getComputedStyle(ele)[attr];
+        } else if (ele.currentStyle) {
+            res = ele.currentStyle[attr];
+        } else {
+            res = ele.style[attr];
+        }
+        // 这里返回的样式做了调整,返回必须为字符串,有盒子的样式获取像margin-left会返回纯数字(不含单位px),这样不好处理,统一变成字符串后再对返回结果用正则匹配
+        return res + '';
     },
-    
+
     /* ====================================================================================== */
 
-    // 让一个元素隐藏(display)
-    show: function (ele) {
+    show: function (ele) { // 让一个元素隐藏(display)
         ele.style.display = 'block'
     },
-    // 让一个元素显示(display)
-    hide: function (ele) {
+    hide: function (ele) { // 让一个元素显示(display)
         ele.style.display = 'none'
     },
-    // 判断某个元素的是否显示(display,浅)
-    isShow: function (ele) {
+    isShow: function (ele) { // 判断某个元素的是否显示(display,浅)
         var getVisibility = ele.style.display;
         return getVisibility !== "none";
     },
-    // 判断某个元素是否显示(display,深)
-    isShowDeel: function (ele) {
-		temp = ele
-		var getVisibility = this.getStyle(temp, 'display');
-		if (getVisibility == 'none') {
-			return false;
-		} else if (temp.tagName == 'BODY') {
-			return true;
-		} else {
-			return this.isShowDeel(temp.parentNode);
-		}
-	},
-    // 让一个元素隐藏(visible)
-    visible: function (ele) {
+    isShowDeel: function (ele) { // 判断某个元素是否显示(display,深)
+        temp = ele
+        var getVisibility = this.getStyle(temp, 'display');
+        if (getVisibility == 'none') {
+            return false;
+        } else if (temp.tagName == 'BODY') {
+            return true;
+        } else {
+            return this.isShowDeel(temp.parentNode);
+        }
+    },
+    visible: function (ele) { // 让一个元素隐藏(visible)
         ele.style.visibility = 'visible'
     },
-    // 让一个元素显示(visible)
-    hidden: function (ele) {
+    hidden: function (ele) { // 让一个元素显示(visible)
         ele.style.visibility = 'hidden'
     },
 
     /* ====================================================================================== */
 
-    // 为一个元素创建一个子元素
-	addElement: function (ele, tag, cls, data, inner, fn) {
-		// 1、创建新元素
-		var newEle = document.createElement(tag)
-		// 2、设置各种属性(图片地址,自定义属性等)
-		newEle.setAttribute('class', cls);
-		for (var item in data) {
-			newEle.setAttribute(item, data[item]);
-		}
-		// 3、设置内容(innerhtml)
-		newEle.innerHTML = inner ? inner : ''
-		// 4、设置回调函数
-		fn && fn(newEle)
-		// 5、将新元素加入到父元素中
-		ele.appendChild(newEle)
-	},
+    addElement: function (ele, tag, cls, data, inner, fn) { // 为一个元素创建一个子元素
+        // 1、创建新元素
+        var newEle = document.createElement(tag)
+        // 2、设置各种属性(图片地址,自定义属性等)
+        newEle.setAttribute('class', cls);
+        for (var item in data) {
+            newEle.setAttribute(item, data[item]);
+        }
+        // 3、设置内容(innerhtml)
+        newEle.innerHTML = inner ? inner : ''
+        // 4、设置回调函数
+        fn && fn(newEle)
+        // 5、将新元素加入到父元素中
+        ele.appendChild(newEle)
+    },
 
     /* ====================================================================================== */
 
-    // 设置cookie
-    setCookie: function (name, value, time) {
-        //document.cookie.setPath("/");
-        var hour = time ? time : 8;
+    setCookie: function (name, value, time) { // 设置cookie
+        var hour = t ? t : 8;
         var exp = new Date();
         exp.setTime(exp.getTime() + hour * 60 * 60 * 1000);
         document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString() + ";path=/";
     },
-    // 获取cookie   存在返回值,不存在返回null
-    getCookie: function (name) {
+    getCookie: function (name) { // 获取cookie   存在返回值,不存在返回null
         var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
         if (arr = document.cookie.match(reg)) {
             if (arr[2] != "undefined")
@@ -211,30 +202,60 @@ var comm = {
             return null;
         }
     },
+    getStack: function (stackName) { //获取历史栈
+        var _this = this;
+        var stack;
+        if (_this.getQueryString('stack')) {
+            stack = JSON.parse(_this.getQueryString('stack'));
+        } else if (
+            _this.getCookie(stackName) && JSON.parse(_this.getCookie(stackName))
+        ) {
+            stack = JSON.parse(_this.getCookie(stackName))
+        }
+        // 如果cookie上没有,就把上一页路径做为返回路径
+        else {
+            stack = [];
+        }
+        return stack;
+    },
+    pushStack: function (stackName, url) { // 添加历史栈
+        var _this = this;
+        var stack;
+        stack = _this.getStack(stackName);
+        stack.push(url);
+        _this.setCookie('stackName', JSON.stringify(stack));
+        _this.setCookie(stackName, JSON.stringify(stack));
+    },
+    popStack: function (stackName) { // 删除历史栈
+        var _this = this;
+        var stack;
+        var delTop;
+        stack = _this.getStack(stackName);
+        delTop = stack.pop();
+        _this.setCookie(stackName, JSON.stringify(stack));
+        return delTop;
+    },
 
     /* ====================================================================================== */
 
-    // 获取url的某个参数
-    getQueryString: function (name) {
+    getQueryString: function (name) { // 获取url的某个参数
         var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
         var r = window.location.search.substr(1).match(reg);
         if (r != null && unescape(r[2]) != "undefined" && unescape(r[2]) != "null") return unescape(r[2]);
-        return ''; 
+        return '';
+    },
+    urlParam: function (obj) { // 将对象转换为url参数字符串
+        var _this = this;
+        var arr = [];
+        for (var name in obj) {
+            arr.push(encodeURIComponent(name) + "=" + encodeURIComponent(obj[name]));
+        }
+        return arr.join("&");
     },
-    // 将对象转换为url参数字符串
-    urlParam: function (data) { 
-		var _this = this;
-		var arr = [];
-		for (var name in data) {
-			arr.push(encodeURIComponent(name) + "=" + encodeURIComponent(data[name]));
-		}
-		return arr.join("&");
-	},
 
     /* ====================================================================================== */
 
-    // 判断是否为有效手机号
-    isPoneAvailable: function (pone) {
+    isPoneAvailable: function (pone) { // 判断是否为有效手机号
         var myreg = /^[1][3,4,5,7,8][0-9]{9}$/;
         if (!myreg.test(pone)) {
             return false;
@@ -242,13 +263,20 @@ var comm = {
             return true;
         }
     },
+    computeTimeStr: function (time) { // 转换时间格式
+        var sec = Math.floor(time % 60)
+        var min = Math.floor(time / 60 % 60)
+        var hour = Math.floor(time / 60 / 60)
+        sec = sec < 10 ? '0' + sec : sec
+        min = min < 10 ? '0' + min : min
+        hour = hour < 10 ? '0' + hour : hour
+        var timeStr = hour + ':' + min + ':' + sec;
+        return timeStr
+    },
 
     /* ====================================================================================== */
 
-    // 弹窗,用于测试
-    Debuglog: function (text) {
-        // if(testid.indexOf(gdyx.data.client)<=-1)
-        //return
+    Debuglog: function (text) { // 弹窗,用于测试
         if (typeof printWind == "undefined") {
             window.printWind = document.createElement("div");
             window.inner = document.createElement("div");
@@ -277,4 +305,4 @@ var comm = {
         inner.style.top = -a + "px";
     }
 
-}
+}