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 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
