代码修改后的版本,全部提交
This commit is contained in:
589
Mtxfw.VipSite/script/api.js
Normal file
589
Mtxfw.VipSite/script/api.js
Normal file
@@ -0,0 +1,589 @@
|
||||
/*
|
||||
* APICloud JavaScript Library
|
||||
* Copyright (c) 2014 apicloud.com
|
||||
*/
|
||||
(function(window){
|
||||
var u = {};
|
||||
var isAndroid = (/android/gi).test(navigator.appVersion);
|
||||
var uzStorage = function(){
|
||||
var ls = window.localStorage;
|
||||
if(isAndroid){
|
||||
ls = os.localStorage();
|
||||
}
|
||||
return ls;
|
||||
};
|
||||
function parseArguments(url, data, fnSuc, dataType) {
|
||||
if (typeof(data) == 'function') {
|
||||
dataType = fnSuc;
|
||||
fnSuc = data;
|
||||
data = undefined;
|
||||
}
|
||||
if (typeof(fnSuc) != 'function') {
|
||||
dataType = fnSuc;
|
||||
fnSuc = undefined;
|
||||
}
|
||||
return {
|
||||
url: url,
|
||||
data: data,
|
||||
fnSuc: fnSuc,
|
||||
dataType: dataType
|
||||
};
|
||||
}
|
||||
u.trim = function(str){
|
||||
if(String.prototype.trim){
|
||||
return str == null ? "" : String.prototype.trim.call(str);
|
||||
}else{
|
||||
return str.replace(/(^\s*)|(\s*$)/g, "");
|
||||
}
|
||||
};
|
||||
u.trimAll = function(str){
|
||||
return str.replace(/\s*/g,'');
|
||||
};
|
||||
u.isElement = function(obj){
|
||||
return !!(obj && obj.nodeType == 1);
|
||||
};
|
||||
u.isArray = function(obj){
|
||||
if(Array.isArray){
|
||||
return Array.isArray(obj);
|
||||
}else{
|
||||
return obj instanceof Array;
|
||||
}
|
||||
};
|
||||
u.isEmptyObject = function(obj){
|
||||
if(JSON.stringify(obj) === '{}'){
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
u.addEvt = function(el, name, fn, useCapture){
|
||||
if(!u.isElement(el)){
|
||||
console.warn('$api.addEvt Function need el param, el param must be DOM Element');
|
||||
return;
|
||||
}
|
||||
useCapture = useCapture || false;
|
||||
if(el.addEventListener) {
|
||||
el.addEventListener(name, fn, useCapture);
|
||||
}
|
||||
};
|
||||
u.rmEvt = function(el, name, fn, useCapture){
|
||||
if(!u.isElement(el)){
|
||||
console.warn('$api.rmEvt Function need el param, el param must be DOM Element');
|
||||
return;
|
||||
}
|
||||
useCapture = useCapture || false;
|
||||
if (el.removeEventListener) {
|
||||
el.removeEventListener(name, fn, useCapture);
|
||||
}
|
||||
};
|
||||
u.one = function(el, name, fn, useCapture){
|
||||
if(!u.isElement(el)){
|
||||
console.warn('$api.one Function need el param, el param must be DOM Element');
|
||||
return;
|
||||
}
|
||||
useCapture = useCapture || false;
|
||||
var that = this;
|
||||
var cb = function(){
|
||||
fn && fn();
|
||||
that.rmEvt(el, name, cb, useCapture);
|
||||
};
|
||||
that.addEvt(el, name, cb, useCapture);
|
||||
};
|
||||
u.dom = function(el, selector){
|
||||
if(arguments.length === 1 && typeof arguments[0] == 'string'){
|
||||
if(document.querySelector){
|
||||
return document.querySelector(arguments[0]);
|
||||
}
|
||||
}else if(arguments.length === 2){
|
||||
if(el.querySelector){
|
||||
return el.querySelector(selector);
|
||||
}
|
||||
}
|
||||
};
|
||||
u.domAll = function(el, selector){
|
||||
if(arguments.length === 1 && typeof arguments[0] == 'string'){
|
||||
if(document.querySelectorAll){
|
||||
return document.querySelectorAll(arguments[0]);
|
||||
}
|
||||
}else if(arguments.length === 2){
|
||||
if(el.querySelectorAll){
|
||||
return el.querySelectorAll(selector);
|
||||
}
|
||||
}
|
||||
};
|
||||
u.byId = function(id){
|
||||
return document.getElementById(id);
|
||||
};
|
||||
u.first = function(el, selector){
|
||||
if(arguments.length === 1){
|
||||
if(!u.isElement(el)){
|
||||
console.warn('$api.first Function need el param, el param must be DOM Element');
|
||||
return;
|
||||
}
|
||||
return el.children[0];
|
||||
}
|
||||
if(arguments.length === 2){
|
||||
return this.dom(el, selector+':first-child');
|
||||
}
|
||||
};
|
||||
u.last = function(el, selector){
|
||||
if(arguments.length === 1){
|
||||
if(!u.isElement(el)){
|
||||
console.warn('$api.last Function need el param, el param must be DOM Element');
|
||||
return;
|
||||
}
|
||||
var children = el.children;
|
||||
return children[children.length - 1];
|
||||
}
|
||||
if(arguments.length === 2){
|
||||
return this.dom(el, selector+':last-child');
|
||||
}
|
||||
};
|
||||
u.eq = function(el, index){
|
||||
return this.dom(el, ':nth-child('+ index +')');
|
||||
};
|
||||
u.not = function(el, selector){
|
||||
return this.domAll(el, ':not('+ selector +')');
|
||||
};
|
||||
u.prev = function(el){
|
||||
if(!u.isElement(el)){
|
||||
console.warn('$api.prev Function need el param, el param must be DOM Element');
|
||||
return;
|
||||
}
|
||||
var node = el.previousSibling;
|
||||
if(node.nodeType && node.nodeType === 3){
|
||||
node = node.previousSibling;
|
||||
return node;
|
||||
}
|
||||
};
|
||||
u.next = function(el){
|
||||
if(!u.isElement(el)){
|
||||
console.warn('$api.next Function need el param, el param must be DOM Element');
|
||||
return;
|
||||
}
|
||||
var node = el.nextSibling;
|
||||
if(node.nodeType && node.nodeType === 3){
|
||||
node = node.nextSibling;
|
||||
return node;
|
||||
}
|
||||
};
|
||||
u.closest = function(el, selector){
|
||||
if(!u.isElement(el)){
|
||||
console.warn('$api.closest Function need el param, el param must be DOM Element');
|
||||
return;
|
||||
}
|
||||
var doms, targetDom;
|
||||
var isSame = function(doms, el){
|
||||
var i = 0, len = doms.length;
|
||||
for(i; i<len; i++){
|
||||
if(doms[i].isSameNode(el)){
|
||||
return doms[i];
|
||||
}
|
||||
}
|
||||
return false;
|
||||
};
|
||||
var traversal = function(el, selector){
|
||||
doms = u.domAll(el.parentNode, selector);
|
||||
targetDom = isSame(doms, el);
|
||||
while(!targetDom){
|
||||
el = el.parentNode;
|
||||
if(el != null && el.nodeType == el.DOCUMENT_NODE){
|
||||
return false;
|
||||
}
|
||||
traversal(el, selector);
|
||||
}
|
||||
|
||||
return targetDom;
|
||||
};
|
||||
|
||||
return traversal(el, selector);
|
||||
};
|
||||
u.contains = function(parent,el){
|
||||
var mark = false;
|
||||
if(el === parent){
|
||||
mark = true;
|
||||
return mark;
|
||||
}else{
|
||||
do{
|
||||
el = el.parentNode;
|
||||
if(el === parent){
|
||||
mark = true;
|
||||
return mark;
|
||||
}
|
||||
}while(el === document.body || el === document.documentElement);
|
||||
|
||||
return mark;
|
||||
}
|
||||
|
||||
};
|
||||
u.remove = function(el){
|
||||
if(el && el.parentNode){
|
||||
el.parentNode.removeChild(el);
|
||||
}
|
||||
};
|
||||
u.attr = function(el, name, value){
|
||||
if(!u.isElement(el)){
|
||||
console.warn('$api.attr Function need el param, el param must be DOM Element');
|
||||
return;
|
||||
}
|
||||
if(arguments.length == 2){
|
||||
return el.getAttribute(name);
|
||||
}else if(arguments.length == 3){
|
||||
el.setAttribute(name, value);
|
||||
return el;
|
||||
}
|
||||
};
|
||||
u.removeAttr = function(el, name){
|
||||
if(!u.isElement(el)){
|
||||
console.warn('$api.removeAttr Function need el param, el param must be DOM Element');
|
||||
return;
|
||||
}
|
||||
if(arguments.length === 2){
|
||||
el.removeAttribute(name);
|
||||
}
|
||||
};
|
||||
u.hasCls = function(el, cls){
|
||||
if(!u.isElement(el)){
|
||||
console.warn('$api.hasCls Function need el param, el param must be DOM Element');
|
||||
return;
|
||||
}
|
||||
if(el.className.indexOf(cls) > -1){
|
||||
return true;
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
};
|
||||
u.addCls = function(el, cls){
|
||||
if(!u.isElement(el)){
|
||||
console.warn('$api.addCls Function need el param, el param must be DOM Element');
|
||||
return;
|
||||
}
|
||||
if('classList' in el){
|
||||
el.classList.add(cls);
|
||||
}else{
|
||||
var preCls = el.className;
|
||||
var newCls = preCls +' '+ cls;
|
||||
el.className = newCls;
|
||||
}
|
||||
return el;
|
||||
};
|
||||
u.removeCls = function(el, cls){
|
||||
if(!u.isElement(el)){
|
||||
console.warn('$api.removeCls Function need el param, el param must be DOM Element');
|
||||
return;
|
||||
}
|
||||
if('classList' in el){
|
||||
el.classList.remove(cls);
|
||||
}else{
|
||||
var preCls = el.className;
|
||||
var newCls = preCls.replace(cls, '');
|
||||
el.className = newCls;
|
||||
}
|
||||
return el;
|
||||
};
|
||||
u.toggleCls = function(el, cls){
|
||||
if(!u.isElement(el)){
|
||||
console.warn('$api.toggleCls Function need el param, el param must be DOM Element');
|
||||
return;
|
||||
}
|
||||
if('classList' in el){
|
||||
el.classList.toggle(cls);
|
||||
}else{
|
||||
if(u.hasCls(el, cls)){
|
||||
u.removeCls(el, cls);
|
||||
}else{
|
||||
u.addCls(el, cls);
|
||||
}
|
||||
}
|
||||
return el;
|
||||
};
|
||||
u.val = function(el, val){
|
||||
if(!u.isElement(el)){
|
||||
console.warn('$api.val Function need el param, el param must be DOM Element');
|
||||
return;
|
||||
}
|
||||
if(arguments.length === 1){
|
||||
switch(el.tagName){
|
||||
case 'SELECT':
|
||||
var value = el.options[el.selectedIndex].value;
|
||||
return value;
|
||||
break;
|
||||
case 'INPUT':
|
||||
return el.value;
|
||||
break;
|
||||
case 'TEXTAREA':
|
||||
return el.value;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(arguments.length === 2){
|
||||
switch(el.tagName){
|
||||
case 'SELECT':
|
||||
el.options[el.selectedIndex].value = val;
|
||||
return el;
|
||||
break;
|
||||
case 'INPUT':
|
||||
el.value = val;
|
||||
return el;
|
||||
break;
|
||||
case 'TEXTAREA':
|
||||
el.value = val;
|
||||
return el;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
u.prepend = function(el, html){
|
||||
if(!u.isElement(el)){
|
||||
console.warn('$api.prepend Function need el param, el param must be DOM Element');
|
||||
return;
|
||||
}
|
||||
el.insertAdjacentHTML('afterbegin', html);
|
||||
return el;
|
||||
};
|
||||
u.append = function(el, html){
|
||||
if(!u.isElement(el)){
|
||||
console.warn('$api.append Function need el param, el param must be DOM Element');
|
||||
return;
|
||||
}
|
||||
el.insertAdjacentHTML('beforeend', html);
|
||||
return el;
|
||||
};
|
||||
u.before = function(el, html){
|
||||
if(!u.isElement(el)){
|
||||
console.warn('$api.before Function need el param, el param must be DOM Element');
|
||||
return;
|
||||
}
|
||||
el.insertAdjacentHTML('beforebegin', html);
|
||||
return el;
|
||||
};
|
||||
u.after = function(el, html){
|
||||
if(!u.isElement(el)){
|
||||
console.warn('$api.after Function need el param, el param must be DOM Element');
|
||||
return;
|
||||
}
|
||||
el.insertAdjacentHTML('afterend', html);
|
||||
return el;
|
||||
};
|
||||
u.html = function(el, html){
|
||||
if(!u.isElement(el)){
|
||||
console.warn('$api.html Function need el param, el param must be DOM Element');
|
||||
return;
|
||||
}
|
||||
if(arguments.length === 1){
|
||||
return el.innerHTML;
|
||||
}else if(arguments.length === 2){
|
||||
el.innerHTML = html;
|
||||
return el;
|
||||
}
|
||||
};
|
||||
u.text = function(el, txt){
|
||||
if(!u.isElement(el)){
|
||||
console.warn('$api.text Function need el param, el param must be DOM Element');
|
||||
return;
|
||||
}
|
||||
if(arguments.length === 1){
|
||||
return el.textContent;
|
||||
}else if(arguments.length === 2){
|
||||
el.textContent = txt;
|
||||
return el;
|
||||
}
|
||||
};
|
||||
u.offset = function(el){
|
||||
if(!u.isElement(el)){
|
||||
console.warn('$api.offset Function need el param, el param must be DOM Element');
|
||||
return;
|
||||
}
|
||||
var sl = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft);
|
||||
var st = Math.max(document.documentElement.scrollTop, document.body.scrollTop);
|
||||
|
||||
var rect = el.getBoundingClientRect();
|
||||
return {
|
||||
l: rect.left + sl,
|
||||
t: rect.top + st,
|
||||
w: el.offsetWidth,
|
||||
h: el.offsetHeight
|
||||
};
|
||||
};
|
||||
u.css = function(el, css){
|
||||
if(!u.isElement(el)){
|
||||
console.warn('$api.css Function need el param, el param must be DOM Element');
|
||||
return;
|
||||
}
|
||||
if(typeof css == 'string' && css.indexOf(':') > 0){
|
||||
el.style && (el.style.cssText += ';' + css);
|
||||
}
|
||||
};
|
||||
u.cssVal = function(el, prop){
|
||||
if(!u.isElement(el)){
|
||||
console.warn('$api.cssVal Function need el param, el param must be DOM Element');
|
||||
return;
|
||||
}
|
||||
if(arguments.length === 2){
|
||||
var computedStyle = window.getComputedStyle(el, null);
|
||||
return computedStyle.getPropertyValue(prop);
|
||||
}
|
||||
};
|
||||
u.jsonToStr = function(json){
|
||||
if(typeof json === 'object'){
|
||||
return JSON && JSON.stringify(json);
|
||||
}
|
||||
};
|
||||
u.strToJson = function(str){
|
||||
if(typeof str === 'string'){
|
||||
return JSON && JSON.parse(str);
|
||||
}
|
||||
};
|
||||
u.setStorage = function(key, value){
|
||||
if(arguments.length === 2){
|
||||
var v = value;
|
||||
if(typeof v == 'object'){
|
||||
v = JSON.stringify(v);
|
||||
v = 'obj-'+ v;
|
||||
}else{
|
||||
v = 'str-'+ v;
|
||||
}
|
||||
var ls = uzStorage();
|
||||
if(ls){
|
||||
ls.setItem(key, v);
|
||||
}
|
||||
}
|
||||
};
|
||||
u.getStorage = function(key){
|
||||
var ls = uzStorage();
|
||||
if(ls){
|
||||
var v = ls.getItem(key);
|
||||
if(!v){return;}
|
||||
if(v.indexOf('obj-') === 0){
|
||||
v = v.slice(4);
|
||||
return JSON.parse(v);
|
||||
}else if(v.indexOf('str-') === 0){
|
||||
return v.slice(4);
|
||||
}
|
||||
}
|
||||
};
|
||||
u.rmStorage = function(key){
|
||||
var ls = uzStorage();
|
||||
if(ls && key){
|
||||
ls.removeItem(key);
|
||||
}
|
||||
};
|
||||
u.clearStorage = function(){
|
||||
var ls = uzStorage();
|
||||
if(ls){
|
||||
ls.clear();
|
||||
}
|
||||
};
|
||||
u.fixIos7Bar = function(el){
|
||||
return u.fixStatusBar(el);
|
||||
};
|
||||
u.fixStatusBar = function(el){
|
||||
if(!u.isElement(el)){
|
||||
console.warn('$api.fixStatusBar Function need el param, el param must be DOM Element');
|
||||
return 0;
|
||||
}
|
||||
el.style.paddingTop = api.safeArea.top + 'px';
|
||||
return el.offsetHeight;
|
||||
};
|
||||
u.fixTabBar = function(el){
|
||||
if(!u.isElement(el)){
|
||||
console.warn('$api.fixTabBar Function need el param, el param must be DOM Element');
|
||||
return 0;
|
||||
}
|
||||
el.style.paddingBottom = api.safeArea.bottom + 'px';
|
||||
return el.offsetHeight;
|
||||
};
|
||||
u.toast = function(title, text, time){
|
||||
var opts = {};
|
||||
var show = function(opts, time){
|
||||
api.showProgress(opts);
|
||||
setTimeout(function(){
|
||||
api.hideProgress();
|
||||
},time);
|
||||
};
|
||||
if(arguments.length === 1){
|
||||
var time = time || 500;
|
||||
if(typeof title === 'number'){
|
||||
time = title;
|
||||
}else{
|
||||
opts.title = title+'';
|
||||
}
|
||||
show(opts, time);
|
||||
}else if(arguments.length === 2){
|
||||
var time = time || 500;
|
||||
var text = text;
|
||||
if(typeof text === "number"){
|
||||
var tmp = text;
|
||||
time = tmp;
|
||||
text = null;
|
||||
}
|
||||
if(title){
|
||||
opts.title = title;
|
||||
}
|
||||
if(text){
|
||||
opts.text = text;
|
||||
}
|
||||
show(opts, time);
|
||||
}
|
||||
if(title){
|
||||
opts.title = title;
|
||||
}
|
||||
if(text){
|
||||
opts.text = text;
|
||||
}
|
||||
time = time || 500;
|
||||
show(opts, time);
|
||||
};
|
||||
u.post = function(/*url,data,fnSuc,dataType*/){
|
||||
var argsToJson = parseArguments.apply(null, arguments);
|
||||
var json = {};
|
||||
var fnSuc = argsToJson.fnSuc;
|
||||
argsToJson.url && (json.url = argsToJson.url);
|
||||
argsToJson.data && (json.data = argsToJson.data);
|
||||
if(argsToJson.dataType){
|
||||
var type = argsToJson.dataType.toLowerCase();
|
||||
if (type == 'text'||type == 'json') {
|
||||
json.dataType = type;
|
||||
}
|
||||
}else{
|
||||
json.dataType = 'json';
|
||||
}
|
||||
json.method = 'post';
|
||||
api.ajax(json,
|
||||
function(ret,err){
|
||||
if (ret) {
|
||||
fnSuc && fnSuc(ret);
|
||||
}
|
||||
}
|
||||
);
|
||||
};
|
||||
u.get = function(/*url,fnSuc,dataType*/){
|
||||
var argsToJson = parseArguments.apply(null, arguments);
|
||||
var json = {};
|
||||
var fnSuc = argsToJson.fnSuc;
|
||||
argsToJson.url && (json.url = argsToJson.url);
|
||||
//argsToJson.data && (json.data = argsToJson.data);
|
||||
if(argsToJson.dataType){
|
||||
var type = argsToJson.dataType.toLowerCase();
|
||||
if (type == 'text'||type == 'json') {
|
||||
json.dataType = type;
|
||||
}
|
||||
}else{
|
||||
json.dataType = 'text';
|
||||
}
|
||||
json.method = 'get';
|
||||
api.ajax(json,
|
||||
function(ret,err){
|
||||
if (ret) {
|
||||
fnSuc && fnSuc(ret);
|
||||
}
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
/*end*/
|
||||
|
||||
|
||||
window.$api = u;
|
||||
|
||||
})(window);
|
||||
Reference in New Issue
Block a user