jdjm
Version:
金融移动端 - jm
232 lines (215 loc) • 7.83 kB
JavaScript
/**
* @Author: Created By McChen
* @Date: 2016/5/24
* @Mail: chenjiahao@jd.com
* @Version: V0.0.0
*/
var jm = (function () {
/**============================
private
==============================*/
function pageLockHandler(e) {
e.preventDefault();
}
Function.prototype.before = function (fn) {
var self = this;
return function () {
fn.apply(this, arguments);
return self.apply(this, arguments);
};
};
Function.prototype.after = function (fn) {
var self = this;
return function () {
var ret = self.apply(this, arguments); // return Msg
fn.apply(this, arguments);
return ret;
};
};
/**============================
public
==============================*/
return {
version: "0.0.0",
timestamp: "2016/05/24",
/**=======================
方法按阿拉伯字母顺序排序
=======================**/
/**
* @function object animate by transition
* @param {Object} obj,DOM对象
* @param {String} target,transform属性
* @param {Number} time,动画周期
* @param {String} type,默认为ease-out(选填)
* @return {Object} obj,DOM对象
*/
animate: function (obj, target, time, type) {
obj.css({
"transition": time + "s",
"-webkit-transition": time + "s",
"transform": target,
"-webkit-transform": target,
"transition-timing-function": type || "ease-out",
"-webkit-transition-timing-function": type || "ease-out"
});
return obj;
},
/**
* @function send a ajax request
* @param {Object} config 配置对象(必填)
* @attr {String} url,请求地址(必填)
* @attr {Json} data,默认为空对象(选填)
* @attr {String} type,默认为get(选填)
* @attr {String} dataType,默认为json(选填)
* @return {function} callback,成功回调(必填)
* @return {function} failFn,失败回调(选填,建议填)
*/
ajax: function (config) {
$.ajax({
url: config.url,
data: config.data || {},
type: config.type || "get",
dataType: config.dataType || "json",
success: function (data) {
config.callback && config.callback(data);
},
error: function () {
config.failFn && config.failFn();
}
})
},
/**
* @function create a div
* @param {String} className
* @param {String} innerHTML
* @return {Object} DOM
*/
createDiv: function (className, innerHTML) {
var oDiv = document.createElement("div");
oDiv.className = className;
if (innerHTML) {
oDiv.innerHTML = innerHTML
}
document.body.appendChild(oDiv);
return oDiv;
},
/**
* @function template html module
* @param {String} str, html template
* @argument {Json} data, fill data
* @return {String} formatStr 填充数据后html template
*/
format: function (str) {
var pattern = /\{([\w\-_]+)\}/gm;
var arr = Array.prototype.slice.call(arguments, 1);
var args = /\{(\d+)\}/.test(str) ? arr : arr[0];
var formatStr = str.replace(pattern, function () {
return args[arguments[1]];
});
return formatStr;
},
/**
* @function format the date
* @param {Number} time(时间戳)
* @param {String} format(格式)Eg: 'yyyy-MM-dd HH:mm:ss'
*/
formatTime: function (time, format) {
var t = new Date(time);
var tf = function (i) {
return ( i < 10 ? '0' : '') + i
};
return format.replace(/yyyy|MM|dd|HH|mm|ss/g, function (a) {
switch (a) {
case 'yyyy':
return tf(t.getFullYear());
break;
case 'MM':
return tf(t.getMonth() + 1);
break;
case 'mm':
return tf(t.getMinutes());
break;
case 'dd':
return tf(t.getDate());
break;
case 'HH':
return tf(t.getHours());
break;
case 'ss':
return tf(t.getSeconds());
break;
}
})
},
/**
* @function get systemType and appType
* @return {Object}
* @use {Object}.{type}.{param} = {Boolean}
* @type systemType/appType
* @params isIos/inWx/inApp/inJdApp/inJrApp/inWyApp
*/
getBrowserInfo: function () {
var ua = navigator.userAgent.toLowerCase();
var isIos = ua.indexOf('ipad') > -1 || ua.indexOf('iphone') > -1 || false;
var mqq = ua.indexOf("_sq_") > -1 || false;
var wx = ua.indexOf('micromessenger') > -1 || false;
var jdApp = ua.indexOf('jdapp') > -1 || false;
var jrApp = ua.indexOf('jdjr') > -1 || ua.indexOf('android-async-http') > -1 || false;
var wyApp = ua.indexOf('walletclient') > -1 || false;
var jdStock = ua.indexOf("jdstock") > -1 || false;
var systemType = {
iOS: isIos,
Android: !isIos
};
var appType = {
mqq: mqq,
wx: wx,
jdApp: jdApp,
jrApp: jrApp,
wyApp: wyApp,
jdStock: jdStock
};
return {
systemType: systemType,
appType: appType
};
},
/**
* @function get cookie by name
* @return {String}
* @param {String} name
*/
getCookie: function (name) {
var nameEQ = name + "=";
var ca = document.cookie.split(";");
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == " ") c = c.substring(1, c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
}
return null;
},
/**
* @function get the value of url string
* @param {String} name
*/
getUrlString: function (name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg);
if (r != null) return decodeURIComponent(r[2]);
return null;
},
/**
* @function lock the screen
*/
pageLock: function () {
document.addEventListener("touchmove", pageLockHandler, false)
},
/**
* @function unlock the screen
*/
pageUnlock: function () {
document.removeEventListener("touchmove", pageLockHandler, false)
}
}
})();