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预加载
- }
|