utils.js 2.8 KB
define("utils", ["zepto"], function() {
    var alaways = function() { return true; }
    var type = function (type) {
        return function (o) {
            return {}.toString.call(o) == "[object " + type + "]";
        };
    };
    var isString = type("String");
    var isObject = type("Object");

    var historyLen = 0;

    return {
        ajax: function(mode, settings, success, fail) {
            if (isObject(mode)) {
                fail = success;
                success = settings;
                settings = mode;
                mode = "com.api.mobilemode.web.mobile.portal.PortalAction";
            }

            var url = settings.url;

            if(!url) {
                url = "/mobilemode/mobile/server.jsp?invoker=" + mode + "&action=" + settings.action;
            }

            settings.url = url;
            settings.cache = false;
            settings.dataType = "json" || settings.dataType;
            success = success || alaways;
            fail = fail || alaways;

            return $.ajax(settings).done(function(res) {
                if(res.status == "1") {
                    return success(res);
                }else if(res.status == "0"){
                    alert("Server interface error:" + res.errMsg);
                }else{
                    alert("Server connection exception:"+JSON.stringify(res));
                }
                fail();
            });
        },
        strToJson: function(str, sep, symbol) {
            var arr = str.split(sep), o = {};
            var key, value;
            
            if(!arr.length) return o;
            
            arr.forEach(function(t) {
                var syms = t.split(symbol);
                
                if(syms.length === 1) return;
                
                key = syms[0];
                value = syms[1];
                o[key] = value;
            });

            return o;
        },
        showBackBtn: function (back) {
            // 在ios中的e-mobile环境中 需要调用e-mobile接口来显示返回按钮
            if (!!navigator.userAgent.match(/e-mobile/i) && !!navigator.userAgent.match(/iPhone|ipad/i)) {
                historyLen += (back ? -1 : 1);
                if (historyLen === 1 && back) {
                    location = "emobile:backBtnHide";
                } else if (historyLen === 2 && !back) {
                    location = "emobile:backBtnShow";
                }
            }
        },
        toggleTab: function (el) {
            var $tab = $(el.target && this || el), // el.target 事件
                $panel = $(".tab-panel[data-rel=" + $tab.data("tab") + "]");
            var _toggle = function ($el) {
                $el.addClass("active").siblings(".active").removeClass("active");
            };

            _toggle($tab);
            _toggle($panel);
        }
    };
});