main.js 3.61 KB
define("main", [
    "mobilebone",
    "mobilemode",
    'main/log',
    "permission/pageview",
    "zepto",
    "Component",
    "mApi",
    "mService",
    "i18n"
], function (Mobilebone, mobilemode, logger, permission) {
    // 参数黑名单
    var backlist_param = [
        // Emobile自带参数
        "clientos",			
        "viewmodule",		
        "ipaddress",		
        "clientosver",		
        "clientlevel",		
        "_isShowTerminal_", 
        "_hrmorder_",		

        //Emobile自带参数, 微信自带参数
        "sessionkey",		
        "clienttype",		
        "clientver",		
        "serverver",		

        // 微信自带参数
        "scope",			
        "outsysId", 		
        "dd_share", 		
        "fromebdataidtype",		
        "targetoutsysid",		
        "fromebdataid",			

        "eb_auth_outsysid",		
        "eb_auth_agentid",		
        "eb_client_ipaddress",	
        "eb_auth_corptype",	

        // EM7 自带参数
        "moduleid",
        "outsysid",
        "em_client_type",
        "em_auth_code", 

        // 移动建模页面参数
        'appid',
        'mToken',
        'mTokenFrom',
        'appHomepageId',
    ];

    var mUtil = require("mUtil");
    var com = require("Component");
    var i18n = require("i18n");
    var _init = function (pageContent) {
        var meta = window.__meta__;
        //首页标题
        meta.appname && (pageContent = pageContent.replace(new RegExp("<div[^>]*id\\s*=\\s*['|\"]"+meta.appHomepageId+"['|\"][^>]*>", "i"), function(match){
            var titleMatch = /data-title\s*=([\S\s]+)class/i.exec(match);
            if (titleMatch) {
                var dataTitle = 'data-title="' + meta.appname + '" class';
                match = match.replace(titleMatch[0], dataTitle);
            }
            return match;
        }));
        //替换页面中的多语言
        pageContent = com.replaceMutilLanguage(pageContent, mUtil.getUserLanguage());

        $(document.body).append(pageContent);
        Mobilebone.rootTransition = mobilemode;
        Mobilebone.evalScript = true;
        Mobilebone.mergeCallback = false;
        Mobilebone.onpagefirstinto = mobilemode.pageInit;
        Mobilebone.callback = mobilemode.pageChange;

        logger.init();
        permission.init();
        i18n.init(mUtil.getUserLanguage());
        initMobilebone();
    };

    function getFormdata() {
        var params = decodeURIComponent(location.search).replace(/^\?/g, '');
        var paramsArr = params.match(/([^&]*?)=(.*?)(?=&|&?$)/g) || [];
        var compliants = paramsArr.filter(function (paramStr) {
            var arr = paramStr.split('=');
            var key = arr[0];

            return !~backlist_param.indexOf(key);
        });

        return compliants.map(function (m) {
            // 兼容 参数为_mm_xxx=x的情况
            return m.replace(/^_mm_/g, "");
        }).join("&");
    }

    function initMobilebone() {
        var pageid = mUtil.getCurrentPageId();
        var hash = location.hash.replace("#&", "#");
        var matches = hash.match(/page_service.*?_(page_\d+)/);
        var isPageServiceHash = matches && 2 === matches.length;

        if (isPageServiceHash) {
            pageid = matches[1];
        }

        // 需要提前back,用于获取Formdata
        isPageServiceHash && history.back();

        setTimeout(function () {
            Mobilebone.init(pageid, {
                reload: true,
                formdata: getFormdata(),
                forceDefaultPage: isPageServiceHash
            });
        });
    }

    if(typeof main_mmsrcHtml !== "undefined") return _init(main_mmsrcHtml);

    window.Loader.onHtmlLoaded = _init;
});