/*预加载处理区域*/ Namespace.register("U.MD"); //#region 加载js css等 /** * 添加styleText * * @param {string} 需要定位的右键菜单 * @param {element} 需要定位的右键菜单 */ U.M.CCssStyle = function (UST) { //UST var _UDOD = document.documentElement.firstChild, //获取head标签 _UDSD = $$("style", {}); //创建一个style标签 if (_UDSD.styleSheet) { //html5兼容 _UDSD.styleSheet.cssText = UST; } else { //ie兼容 _UDSD.appendChild(document.createTextNode(UST)); } _UDOD.appendChild(_UDSD); document.body.offsetHeight; //添加设置和执行 return _UDSD; } /** * jsonp初始化对象 * * @param {string} 获取的地址 例如:"http://cbjs.baidu.com/js/m.js"。 * @param {string} //获取的类型 ----------js 获取js文件 ----------css 获取css文件 * @param {function} 回调函数 * @param {object} { "src": "http://cbjs.baidu.com/js/m.js", "type": "text/javascript" } * @param {boolean} 是否重复加载文件 * @return {element} 加载的元素 */ U.MD.DynamicLoad = function (UURL, UTP, UCB, UDE, UTF) { var i, _UDTD, _UDAD, _UAE = [UTP == "js" ? "script" : UTP], _UHD = $("head"); UTP = UTP.toLocaleLowerCase(); //访问的类型 _UDAD = $(_UAE[0]); //获取所有相同类型的文件 if (!UTF) {//判断文件是否添加 for (i = 0; i < _UDAD.length; i++) { if (_UDAD[i].src == UURL) { _UDTD = _UDAD[i]; break; } } } if (!_UDTD || UTF) { //设置异步回调 _UDTD = $$(_UAE, UDE || (UTP == "js" ? { "src": UURL, "type": "text/javascript", "language": "javascript", "charset": "utf-8"} : { "href": UURL, "type": "text/css", "rel": "stylesheet" })); _UHD.append(_UDTD, 0, _UHD[0].firstChild); } U.MD.IframeLoad(_UDTD, UCB); return _UDTD; } /** * 设置异步加载文件或者iframe * @param {element} 加载的元素 ----------$("iframe", { "id": _UTP, "name": _UTP, "width": 0, "height": 0, "style": { "display": "none" }, "src": _UDE[i][1] }, _UCS)的iframe对象。 * @param {function} 回调函数 */ U.MD.IframeLoad = function (UDOD, UCB) { try { var _UCP = UDOD.complete, _URS = UDOD.readyState; } catch (e) { } if (_UCP == "complete" && ((_URS == "complete" || _URS == "loaded") || _URS == null)) { U.M.apply(UDOD, UCB)(); return; } else { (UDOD.onreadystatechange) && (UCB = U.M.apply(UDOD, [[UDOD.onreadystatechange], [UCB]])); UDOD.onreadystatechange = U.M.apply(UDOD, [[U.MD.IframeLoad.AILD, [UDOD, UCB]]]); } return UDOD; } /** * onload成功进入 * @param {element} 加载的元素 * @param {function} 回调函数 */ U.MD.IframeLoad.AILD = function (UDOD, UCB) { var _URS = UDOD.readyState; (_URS == "complete" || _URS == "loaded" || _URS == null) && (UDOD.complete = "complete", UDOD.onreadystatechange = null, (U.Ut.isFunction(UCB) ? UCB.call(UDOD) : U.M.apply(UDOD, UCB)()), UDOD.complete = null); } ////判断文件是否存在 //U.MD.ISWJCZ = function () { // $.ajax(UURL, "", UCB, "", { "type": "get" }); //} /** 设置元素loading 问题: ----添加一个参数,允许往loading中传递元素。 ----在第一个loading数据量大未出数据的时候,点第二个loading,第二个先获取到数据,会否第二个会先出效果。 ----由于第一次点击数据量大,后台是否能够第二个数据先出。 ----由于第一次点击数据量大,前台loading的效果是否支持第二以及后续点击先出。 * * @param {element} 元素 * @param {boolean} loading类型 ------------true 、 false 两种loading */ U.MD.loading = function (UDOD, UTF) { if (UDOD) { var i, _UAE, _UDTD, _UDPD = $(UDOD).Parent(), _UDSD = UDOD ? UDOD.__ULOADElement__ : null, //该元素的loading元素 _USE = { width: "", height: "", overflow: "", padding: "", borderWidth: "", minHeight: "", minWidth: "", cssText: "" }; //loading设置样式区域 if (_UDSD) {//loading存在添加计数 if (UDOD != _UDSD) { _UDSD.P++; } } else { //无loading 需要loading的情况 _UDSD = UDOD.__ULOADElement__ = $$("div", { "P": 0, "className": UDOD.className, //这个为loading元素 "style": { "cssText": UDOD.style.cssText + ";" + ($(UDOD).css("display") == "none" ? "display:block" : "") }, "onresize": [[U.MD.loading.Donresize, ["this"]]] }); if (UTF === true) {//loading样式1 $$("div", { "style": { "cssText": "overflow:hidden;width:40px;height:20px;background:url('/img/loading.gif') 0px 0px no-repeat;margin:auto"} }, _UDSD); } else { //loading样式2 $$("div", { "style": { "cssText": "position:relative;width:" + (UTF && UTF.width ? UTF.width : "33px") + ";height:" + (UTF && UTF.height ? UTF.height : "33px") + ";background:url('" + (UTF && UTF.img ? UTF.img : "/img/UAL.gif") + "') 0px 0px no-repeat;margin:auto"} }, _UDSD); } try { _UDPD.insertBefore(_UDSD, UDOD); } //loading 添加到指定的位置 catch (e) { } //loading样式设置 U.MD.loading.Donresize(_UDSD, UDOD, UTF); _UAE = UDOD.style; _$(_USE).Each(function (USV, UTP) { _USE[UTP] = _UAE[UTP]; }); //原元素缩小 (UDOD = $(UDOD)).addAttrArray({ "__UCS__": _USE, "style": { "cssText": "width:0px;overflow:hidden;height:0px;padding:0;min-height:0px;min-width:0px;border-width:0px;"} }); } return _UDSD; } } /** * loading变化设置 * @param {element} 当前loading元素 */ U.MD.loading.Donresize = function (UDOD, UDTD, UTF) { if (UDOD["P"] > -1) { //loading变化设置 var _UDAD = $("div", UDOD), _UH = $(UDOD).height() - _UDAD[0].offsetHeight; //loading大小变化 _UDAD[0].style.top = (_UH > 0 ? _UH : 0) / 2 + "px"; //loading图片位置设定 } else { //取消loading U.MD.uploading(UDOD); } } /** * 取消loading * @param {element} 当前loading元素 */ U.MD.uploading = function (UDOD) { UDOD = UDOD[0] || UDOD; //需要loading元素 var i, _UAE = ["__ULOADElement__", "__UCS__"], //loading元素遗留参数 _UDTD = UDOD[_UAE[0]], //loading _UME = UDOD[_UAE[1]], //需loading元素原样式 _UCE = UDOD.style, _UDE = { "width": "0px", "height": "0px", "overflow": "hidden", "padding": "0px", "borderWidth": "0px", "minHeight": "0px", "minWidth": "0px" }; //元素变回参数 //判断元素是否已经可以结束loading if (_UDTD && ((_UDTD["P"]--) == 0)) { for (i in _UDE) { if (_UDE.hasOwnProperty(i)) { //设置或者取消原参数 if (_UDE[i] == _UCE[i]) { _UDE[i] = _UME[i]; } else { delete _UDE[i]; } } }; UDOD["__UCS__"] = null; //设置样式 $(_UDTD).remove(); //移除loading $(UDOD).addAttrArray({ "style": _UDE }); //原loading元素样式回归 //清除残留参数 try { delete UDOD[_UAE[0]]; delete UDOD[_UAE[1]] } catch (e) { UDOD.removeAttribute(_UAE[0]); UDOD.removeAttribute(_UAE[1]); } return true; } } //#endregion