MxWeiXinPF.Web/weixin/sjb/js/wei_webapp_v2_common.js

(开头部分) 19KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

/**
 * 微生活html5页面 通用功能
 * @author luan luan
 */
var 
	/**
	 * 环境检测 _env.ios _env.android _env.version 等
	 */
	_env = (function(){ var _ua = navigator.userAgent, _m = null, _formatV = function(vstr, vdiv){ var f = vstr.split(vdiv); f = f.shift()+'.'+f.join(''); return f*1; }, _rtn = { ua: _ua, version: null, ios: false, android: false, windows: false, blackberry: false, meizu: false, weixin: false, wVersion: null, qq: false, qVersion: null, touchSupport: ('createTouch' in document), hashSupport: !!('onhashchange' in window) }; _m = _ua.match(/MicroMessenger\/([\.0-9]+)/); if ( _m != null ){ _rtn.weixin = true; _rtn.wVersion = _formatV(_m[1], '.'); }_m = _ua.match(/QQ\/([\d\.]+)$/); if ( _m != null ){ _rtn.qq = true; _rtn.qVersion = _formatV(_m[1], '.'); } _m = _ua.match(/Android(\s|\/)([\.0-9]+)/); if ( _m != null ){ _rtn.android = true; _rtn.version = _formatV(_m[2], '.'); _rtn.meizu = /M030|M031|M032|MEIZU/.test(_ua); return _rtn; } _m = _ua.match(/i(Pod|Pad|Phone)\;.*\sOS\s([\_0-9]+)/); if ( _m != null ){ _rtn.ios = true; _rtn.version = _formatV(_m[2], '_'); return _rtn; } _m = _ua.match(/Windows\sPhone\sOS\s([\.0-9]+)/); if ( _m != null ){ _rtn.windows = true; _rtn.version = _formatV(_m[1], '.'); return _rtn; } var bb = { a: _ua.match(/\(BB1\d+\;\s.*\sVersion\/([\.0-9]+)\s/), b: _ua.match(/\(BlackBerry\;\s.*\sVersion\/([\.0-9]+)\s/), c: _ua.match(/^BlackBerry\d+\/([\.0-9]+)\s/), d: _ua.match(/\(PlayBook\;\s.*\sVersion\/([\.0-9]+)\s/) }; for (var k in bb){ if (bb[k] != null){ _m = bb[k]; _rtn.blackberry = true; _rtn.version = _formatV(_m[1], '.'); return _rtn; } } return _rtn; }()),
	_ua = _env.ua,
	_touchSupport = _env.ios || _env.android || _env.touchSupport,
	_hashSupport = _env.hashSupport,
	_isIOS = _env.ios,
	_isOldIOS = _env.ios && (_env.version<4.5),
	_isAndroid = _env.android,
	_isMeizu = _env.meizu,
	_isOldAndroid22 = _env.android && (_env.version<2.3),
	_isOldAndroid23 = _env.android && (_env.version<2.4),
	_clkEvtType = _touchSupport?'touchstart':'click',
	_movestartEvt = _touchSupport?'touchstart':'mousedown',
	_moveEvt = _touchSupport?'touchmove':'mousemove',
	_moveendEvt = _touchSupport?'touchend':'mouseup',
	_vendor = (/webkit/i).test(navigator.appVersion) ? "webkit": (/firefox/i).test(navigator.userAgent) ? "Moz": "opera" in window ? "O": (/MSIE/i).test(navigator.userAgent) ? "ms": "",
	_has3d = "WebKitCSSMatrix" in window && "m11" in new WebKitCSSMatrix(),
	_trnOpen = "translate" + (_has3d ? "3d(": "("),
	_trnClose = _has3d ? ",0)": ")",
	_needHistory = ( _isIOS && !!(window.history && window.history.pushState) ),
	_appCache = window.applicationCache,
	/**
	 * 基础的ajax方法, 提供给普通html5页面使用
	 * @param url
	 * @param method 'get'|'post'
	 * @param params 请求所带参数, 一个Object对象
	 * @param callback 一个json服务器端返回值的回调
	 * @param useJSON 返回值格式是否使用JSON true|false
	 */
	_doAjax = function(url, method, params, callback, useJSON)	{ if (typeof method == 'undefined') method = 'POST'; if (typeof params == 'undefined') params = null; if (typeof useJSON == 'undefined') useJSON = true; method = method.toLowerCase(); var xmlHttp = null, query = []; if(window.ActiveXObject) xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); else if(window.XMLHttpRequest) xmlHttp = new XMLHttpRequest(); else return false; xmlHttp.onreadystatechange = function(evt) { if(xmlHttp.readyState == 4) { if (xmlHttp.status == 200 || xmlHttp.status == 0) { var rtext = xmlHttp.responseText; var result = useJSON ? JSON.parse(rtext) : rtext; if (callback) callback.call(null, result); } } }; if (params) for (var k in params) query.push(k+'='+params[k]); if (!query.length) query = null; else query = query.join('&'); if (method == 'get' && query != null){ if(url.indexOf('?')>-1) url+= '&'; else url += '?'; url += query; query = null; } if (console && console.log) console.log('ajax: ', url, query); try{ xmlHttp.open(method, url, true); if (method == 'post'){ xmlHttp.setRequestHeader("content-type", "application/x-www-form-urlencoded"); } xmlHttp.setRequestHeader("X-Requested-With","XMLHttpRequest"); xmlHttp.send(query); } catch(ex) { throw "[ajax] request error"; } return true;	},
	/**
	 * 查找单个元素
	 */
	_q = function(s, context){if (context && typeof context === 'string'){ try{context = _q(context);}catch(ex){console.log(ex);return;} } return (context||document).querySelector(s);},
	/**
	 * 查找元素集合
	 */
	_qAll = function(s, context){if (context && typeof context === 'string'){ try{context = _q(context);}catch(ex){console.log(ex);return;} } return (context||document).querySelectorAll(s);},
	/**
	 * 合并元素查找结果
	 */
	_qConcat = function(){ 		var i=0, leng = arguments.length, arr=[]; 		for (;i<leng;i++){ 			var arg = arguments[i]; 			if (typeof arg === 'string') 				arg = _qAll(arg);			else if ('nodeType' in arg && arg.nodeType === 1)				arg = [arg];			_forEach(arg, function(aitem){				arr.push(aitem);			});		} 		return arr; 	},
	/**
	 * 运行时缓存池
	 */
	MCache = (function(){ var cache = {};  return { set:function(key,val) { cache[key]=val; }, get:function(key) { return cache[key]; }, clear:function() { cache = {}; }, remove:function(key) { delete cache[key]; } }; }()),
	/**
	 * 本地存储
	 */
	MStorage = (function(){var _session = window.sessionStorage, _local = window.localStorage, _get = function(k){var d = _getData(k); if (d != null) return d.value; return null; }, _getData = function(k){if (k in _session) {return JSON.parse(_session.getItem(k)); }else if (k in _local) return JSON.parse(_local.getItem(k)); else return null; }, _set = function(k, v){var d = {value: v, ts: (new Date).getTime() }; d = JSON.stringify(d); _session.setItem(k, d); _local.setItem(k, d); }, _clear = function(){_session.clear(); _local.clear(); }, _remove = function(k){_session.removeItem(k); _local.removeItem(k); }, _removeExpires = function(time){var now = (new Date).getTime(), data; for (var key in _local){data = MStorage.getData(key); if ( now - data.ts > time ){_local.removeItem(key);_session.removeItem(key); } } }; return {set: _set, get: _get, getData: _getData, clear: _clear, remove: _remove, removeExpires: _removeExpires }; }()),
	/**
	 * url hash 解析
	 */
后面还有 248 行代码,购买后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。