|
@@ -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";
|
|
|
}
|
|
|
|
|
|
-}
|
|
|
+}
|