ipu的trunk版的android工程和服务端工程。

browser-toolkit.js 9.1KB

    /** * 提供三个对象browser、redirect、ajax. 用于辅助mobile-browser.js的实现,仅仅在浏览器访问时使用. * mobile-browser.js需要依赖browser-core.js. */ define(["module","jcl","clientTool"],function(module,Wade,clientTool) { var browserTool = {}; module.exports = browserTool; browserTool.browser = (function(){ function sessionError(){ alert("your browser not support sessionStorage!"); } function localError(){ alert("your browser not support localStorage!"); } return{ loadingStart : function(message,title){ // 等待开发 },loadingStop : function(){ // 等待开发 },confirm : function(msg){ window.confirm(msg); },tip : function(msg,type){ // 等待开发 alert(msg); },alert : function(msg,title,callback){ alert(msg); if(callback){ callback(); } },setMemoryCache : function(key, value){ if (window["sessionStorage"]) { if (clientTool.tool.isDataMap(key)) { for ( var k in key.map) { window["sessionStorage"].setItem(k, key.map[k]); } } else { if (!value) { return } window["sessionStorage"].setItem(key, value); } } else { sessionError(); } },getMemoryCache : function(callback,key, value){ if (window["sessionStorage"]) { if (clientTool.tool.isArray(key)) { var data = new Wade.DataMap(); for ( var i = 0, len = key.length; i < len; i++) { data.put(key[i], window["sessionStorage"].getItem(key[i])); } callback(data); return; } else { callback(window["sessionStorage"].getItem(key)); return; } } else { sessionError(); } },removeMemoryCache : function(key){ if (window["sessionStorage"]) { if (clientTool.tool.isArray(key)) { for ( var i = 0, len = key.length; i < len; i++) { window["sessionStorage"].removeItem(key[i]); } } else { window["sessionStorage"].removeItem(key); } } else { sessionError(); } },clearMemoryCache : function(){ if (window["sessionStorage"]) { window["sessionStorage"].clear(); } else { sessionError(); } },setOfflineCache : function(key, value){ if (window["localStorage"]) { if (clientTool.tool.isDataMap(key)) { for ( var k in key.map) { window["localStorage"].setItem(k, key.map[k]); } } else { if (!value) { return } window["localStorage"].setItem(key, value); } } else { localError(); } },getOfflineCache : function(callback, key, value){ if (window["localStorage"]) { if (clientTool.tool.isArray(key)) { var data = new Wade.DataMap(); for ( var i = 0, len = key.length; i < len; i++) { data.put(key[i], window["localStorage"].getItem(key[i])); } callback(data); return; } else { callback(window["localStorage"].getItem(key)); return; } } else { localError(); } },removeOfflineCache : function(key){ if (window["localStorage"]) { if (clientTool.tool.isArray(key)) { for ( var i = 0, len = key.length; i < len; i++) { window["localStorage"].removeItem(key[i]); } } else { window["localStorage"].removeItem(key); } } else { localError(); } },clearOfflineCache : function(){ if (window["localStorage"]) { window["localStorage"].clear(); } else { localError(); } } }; })(); /** * 页面重定向的API */ browserTool.ServerPath = "mobile"; browserTool.redirect = (function() { return { /** * isContext 为true时,data参数作为页面渲染参数 * isEncode 只支持传boolean的false */ buildUrl : function(action, data, isContext, isEncode) { var url = browserTool.ServerPath; url += "?action=" + action; if (data) { if(isEncode){ data = encodeURI(encodeURI(data.toString())); url += "&isEncode=true"; }else{ url += "&isEncode=false"; } url += "&data=" + data; } if (isContext) { url += "&isContext=" + isContext; } return url; }, toUrl : function(url) { if (!url) { return; } document.location.href = url; }, toPage : function(action, params) { var url = this.buildUrl(action, params, true); document.location.href = url; }, postPage : function (url, params) { var temp = document.createElement("form"); temp.action = url; temp.method = "post"; temp.style.display = "none"; for (var x in params) { var opt = document.createElement("input"); opt.type="hidden"; opt.name = x; opt.value = params[x]; temp.appendChild(opt); } document.body.appendChild(temp); temp.submit(); temp.parentNode.removeChild(temp); }, /* * data 参数必须是json格式 */ openPostWindow : function(name, url, data){ var temp = document.createElement("form"); temp.action = url; temp.method = "post"; temp.style.display = "none"; temp.target = name; for (var x in data) { var ele = document.createElement("input"); ele.type="hidden"; ele.name = x; ele.value = data[x]; temp.appendChild(ele); } document.body.appendChild(temp); temp.submit(); temp.parentNode.removeChild(temp); } }; })(); /** * ajax方面操作的API */ browserTool.ajax=(function(){ function doAjax(setting){ var ajaxObj=Wade.extend(true,{},browserTool.ajax.ajaxSettings,setting); Wade.ajaxRequest(ajaxObj); } /* 拼接ajax的url,数据则通过post传输 */ function buildAjaxUrl(url,action,isContext){ url+="?action=" + action; if(isContext){ url+="&isContext=" + isContext; } return url; } function buildPostData(data, isEncode){ var buf = []; for(var key in data){ var ov = data[key], k = (false==isEncode ? key : encodeURIComponent(key)); var type=typeof(ov); if(type== "undefined" || null==ov || ""==ov){ buf.push(k, "=&"); }else if(type != "function" && type != "object"){ buf.push(k, "=", (false==isEncode ? ov : encodeURIComponent(ov)), "&"); }else if($.isArray(ov)){ if(ov.length){ for(var i = 0, len = ov.length; i < len; i++) { buf.push(k, "=", (false == isEncode ? (ov[i] === undefined ? '' : ov[i]) : encodeURIComponent(ov[i] === undefined ? '' : ov[i])), "&"); } }else{ buf.push(k, "=&"); } } } buf.pop(); return buf.join(""); } return{ ajaxSettings:{ simple: false, // 使用简单返回,不做tapestry相关的数据转换不处理part type: "GET", async: true, cache: false, dataType: "text", loading: true, timeout: 3*60*1000, encoding: "UTF-8" }, setup:function(settings){ if(settings && Wade.isPlainObject(settings)){ Wade.extend(this.ajaxSettings,settings); } }, request:function(url,action,params,callback,error,settings,isContext){ var transUrl = buildAjaxUrl(url,action,isContext); /* 处理Wade.DataMap类型 */ var postParam = new Wade.DataMap(); if(params){ postParam.put("data",params.toString()); } var setting = Wade.extend({ url:transUrl, data:buildPostData(postParam.map,true), success: callback, error: _error },browserTool.ajax.ajaxSettings,settings); // 框架封装处理只处理text返回类型 if("text"!=setting.dataType){ setting.simple=true; } doAjax(setting); function _error(xhr, status, ex){ if(setting.simple){ if(error && Wade.isFunction(error)){ error(status,ex.getMessage()); } return; } throw ex; } }, get:function(action,params,callback,error,settings){ browserTool.ajax.request("mobiledata",action,params,callback,error,settings); }, post:function(action,params,callback,error,settings){ browserTool.ajax.request("mobiledata",action,params,callback,error,Wade.extend({type:"POST",encoding:"UTF-8"},settings)); }, html:function(action,params,callback,error,settings,isContext){ browserTool.ajax.request("mobile",action,params,callback,error,Wade.extend({type:"POST",encoding:"UTF-8"},settings),isContext); } }; })(); });