| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238 | /*此处为1473跨域文件夹 利用此文件函数实现1473跨域*/Namespace.register("U.CD");//#region 跨域1473文件加载//#region 跨域变量区域//引入www.1473.cn的时候,需要图形界面,即引用ufromd.js的时候,要把首页全部下载下来。//完全跨域的全局变量。例如a.com引入b.com,需要此文件U.CD.dom = "/domain.htm"; //外域引入1473跨域文件//引入www.1473.cn的时候,需要图形界面,即引用ufromd.js的时候,要把首页全部下载下来。//引入www.1473.cn的时候,%.14573.cn引入www.1473.cn的时候,需要使用到下面配置//二级跨域的全局变量,暂时没有用U.CD.cdom = "/Crossdomain.htm"; //跨域获取1473桌面文件U.CD.Len = 1; //主加载域名长度U.CD.ST = ["U_Main"]; //主加载域//跨域1473获取的变量U.CD.UTF = [{ "U_Main": "MA" }, { "U_Disk": "Adisk" }, { "U_BG": "UB" }, { "U_PB": "PB" }, { "U_Pay": "PY" }, { "U_ME": "MA" }, { "reply": "RY"}]; //ajax对应变量//所有跨域以前是指向crossdomain.htm 现在指向了index.htm。U.CD.UKE = [    ["U_Main", "http://main.1473.cn/Crossdomain.htm", "A"], //主域名跨域地址//["U_Pay", "http://pay.1473.cn/Crossdomain.htm", "PY"], //交易系统//["U_Office", "http://office.1473.cn/Crossdomain.htm", "Of"]];//#endregion//#region 跨域解决方案/*** 加载跨域文件  异步加载iframe跨域请求1473项目加载请求* @param  {array} 跨域集----------[["iframename", "iframeurl", "ajaxname"]]----------[iframename] iframename iframe对应的name----------[iframeurl] iframeurl iframe加载的url----------[ajaxname] ajaxname //原u.a替换的命名* @param  {function} 加载成功回调函数* @param  {element} 用户使用U.A.Request时需要时间,则做loading效果*/U.CD.LIFA = function (_ajaxArr, _cb, _el) {    //UBE = UBE || []; //传参默认值    var _bool, _iframeId, i;    // i = UBE.length,_UKE    _ajaxName = U.CD.UTF; //ajax跨域加载域名对应    _crossObj = U.CD.UKE; //添加用户合一 需要跨域的obj对象    _objLength = _crossObj.length;    _frag = $$("frag");    U.CD.Len = _crossObj.length; //变量    //for (j = 0; j < i; j++) { U.CD.ST.push(UBE[j][0]); } //添加预加载处理方式    if (document.domain.indexOf("1473.cn") > -1) { //1473非跨域形式        //while (i--) { //设置外跨域文件         //_UKE = {};        //_UKE[UBE[i][0]] = UBE[i][2];        //_UCE = [_UKE].concat(_UCE);        //}        for (i = 0; i < _objLength; i++) { //创建跨域            try {                //得到形如"U_Main"的iframe的id或者名字                _iframeId = _crossObj[i][0];                //如果iframe已经存在,表示已经加载了跨域iframe,该跨域已经加载处理                if (window[_iframeId] && window[_iframeId].location) { //判断跨域是否已经加载                    //如果iframe没有加载完,则找不到location.href。                    if (window[_iframeId].location.href == _crossObj[i][1]) {                        if (U.CD.AsynLIFA.apply($("#" + _iframeId)[0], [_ajaxName[i], _cb, []])) { //设置域名加载成功函数                            return;                        };                        break;                    } else { //移除加载                        $("#" + _iframeId).remove();                    }                }                //创建跨域iframe的函数。                //跨域未加载处理                _bool = true;                _UIFR = $$("iframe", { "id": _iframeId, "name": _iframeId, "width": 0, "height": 0, "style": { "display": "none" }, "src": _crossObj[i][1] }, _frag);                //跨域回调设置                U.MD.IframeLoad(_UIFR, [                    [U.CD.AsynLIFA, [_ajaxName[i], _cb, U.CD.ST]]                ]);            } catch (e) {                return;            }        }    } else { //1473跨域形式        if (window["U_Domain"]) {            if (window["U_Domain"].location.href == U.CD.dom) {                U.CD.AsynDomain(_cb);                return;            }        } //跨域已经加载成功        else {            U.CD.Introduce(_cb); //初始化1473        }    }    //跨域加载需要时间,可以传递一个loading图标。    if (_el && _bool) {        U.MD.loading(_el[0] || _el, _el[1]); //设置loading加载    }    ($("#usestudio-server")[0] || $("body")[0]).appendChild(_frag); //添加到页面}/*** iframe加载成功后,异步加载跨域** @param  {object} 当前跨域集* @param  {function} 成功回调* @param  {array} 所有的跨域集* @return {boolean} 是否已经成功过回调*/U.CD.AsynLIFA = function (iframe, _cb, _crossArr) { //加载跨域文件    var i, j, _iframe = this.contentWindow;    _iframe.name = this.id; //设置当前iframe name    U.CD["Len"]--; //总加载-1    try {        for (i in iframe) {            //window.U[iframe[i]] = _iframe.U.A; //设置此域U.A的别称,让他们指向一致。            //加载成功后,则删除跨域变量。            j = _crossArr.indexOf(i);            if (j > -1) { _crossArr.splice(j, 1) }        }    } catch (e) { } //加载Iframe    if (!_crossArr.length) { //判断是否已经加载成功过        _crossArr.push(false);        if (_cb) {            (_cb()); //回调函数        }        return true;    }}/*** 非1473引入1473...** @param  {function} 加载回调* @param  {element} loading元素*/U.CD.Introduce = function (_cb, _el) {    var _el = $$("iframe", {        "id": "U_Domain",        "name": "U_Domain",        "width": 0,        "height": 0,        "style": { "display": "none" },        "src": U.CD.dom    });    U.MD.IframeLoad(_el, $("#usestudio-server")[0] || $("body")[0]), [        [U.CD.AsynDomain, [_cb]]    ]; //初始化1473    if (_el) {        U.MD.loading(_el[0] || _el, _el[1]); //加载1473loading    }    // (UDOD) && (U.MD.loading(UDOD[0] || UDOD, UDOD[1])); //加载1473loading}/*** 非1473加载跨域回调** @param  {element} 元素加载的位置*/U.CD.AsynDomain = function (_cb) {    (U.Ut.isFunction(_cb)) && (_cb());}//针对图形界面。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。/*** 跨域引用1473。。。。。。。。。。。。。。,示例在c.147.cn和d.1473.cn。** @param  {element} 加载1473时给其他网站的loanding元素* @param  {function} 加载1473成功的回调函数* @param  {bool} 是否加载1473桌面,如果不是,则只加载窗体。任务管理系统需要我们的桌面*/U.CD.GQB = function (loading, _cb, _bool) {    if (!$("#usestudio-server")[0]) {        var _el = $$("div", { id: "usestudio-server", className: "usestudio-server", "__top__": "false" }, document.body); //生成跨域加载        //1473域加载1473平台        if (document.domain == "1473.cn") {            _el = $$("iframe", { "width": 0, "height": 0, "style": { "display": "none" }, "src": "/index8.aspx" }, $("body")[0]); //获取1473主站点            window.onload = null;            U.MD.IframeLoad(_el, [                [U.CD.AsynGQB, [_el, loading, _cb, _bool]]            ]); //加载1473内容        }        //非1473加载        else { U.CD.CGQB(_cb, _bool); }    }}/** 加载1473整体** @param  {element} 当前加载的iframe* @param  {element} 需要loading的元素* @param  {element} 加载的位置* @param  {bool} 是否加载1473桌面,如果不是,则只加载窗体。任务管理系统需要我们的桌面*/U.CD.AsynGQB = function (iframe, loading, cb, b) {    var i, _document, _html;    //_UNE = undefined,    //_UTF = U.Ut.isString(UDOD), //判断位置是否为元素    var _windows = iframe.contentWindow; //1473cookie是    document.wincookie = iframe.contentWindow.document.cookie; //document.wincookie 自己做一个全局变量,记录1473的cookie.    var _content = $("#usestudio-server")[0]; //获取加载的位置    //if (_UTF) {    //    UDOD = $($$("div", { "innerHTML": UDOD })).Child()[0];    //    _UST = UDOD.innerHTML;    //}    //else {    _html = $(b === true ? "body" : "#UD_SY", _windows.document)[0].innerHTML;    //}    //if (!_UTF) {    try {        _document = _windows.document.open();    }    catch (e) {        _document = _windows.document;    }    _document.write = "";    _document.close();    $(iframe).remove()    //}    _content.innerHTML = _html; //添加值    if (U.D.Load) { U.D.Load(cb) }    else if (cb) { cb(); } //调用1473预加载}
 |