U.MD.js 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. /*预加载处理区域*/
  2. Namespace.register("U.MD");
  3. //#region 加载js css等
  4. /**
  5. * 添加styleText
  6. *
  7. * @param {string} 需要定位的右键菜单
  8. * @param {element} 需要定位的右键菜单
  9. */
  10. U.M.CCssStyle = function (UST) {
  11. //UST
  12. var _UDOD = document.documentElement.firstChild, //获取head标签
  13. _UDSD = $$("style", {}); //创建一个style标签
  14. if (_UDSD.styleSheet) { //html5兼容
  15. _UDSD.styleSheet.cssText = UST;
  16. }
  17. else { //ie兼容
  18. _UDSD.appendChild(document.createTextNode(UST));
  19. }
  20. _UDOD.appendChild(_UDSD); document.body.offsetHeight; //添加设置和执行
  21. return _UDSD;
  22. }
  23. /**
  24. * jsonp初始化对象
  25. *
  26. * @param {string} 获取的地址 例如:"http://cbjs.baidu.com/js/m.js"。
  27. * @param {string} //获取的类型
  28. ----------js 获取js文件
  29. ----------css 获取css文件
  30. * @param {function} 回调函数
  31. * @param {object} { "src": "http://cbjs.baidu.com/js/m.js", "type": "text/javascript" }
  32. * @param {boolean} 是否重复加载文件
  33. * @return {element} 加载的元素
  34. */
  35. U.MD.DynamicLoad = function (UURL, UTP, UCB, UDE, UTF) {
  36. var i, _UDTD, _UDAD,
  37. _UAE = [UTP == "js" ? "script" : UTP],
  38. _UHD = $("head");
  39. UTP = UTP.toLocaleLowerCase(); //访问的类型
  40. _UDAD = $(_UAE[0]); //获取所有相同类型的文件
  41. if (!UTF) {//判断文件是否添加
  42. for (i = 0; i < _UDAD.length; i++) {
  43. if (_UDAD[i].src == UURL) {
  44. _UDTD = _UDAD[i]; break;
  45. }
  46. }
  47. }
  48. if (!_UDTD || UTF) { //设置异步回调
  49. _UDTD = $$(_UAE, UDE || (UTP == "js" ? { "src": UURL, "type": "text/javascript", "language": "javascript", "charset": "utf-8"} : { "href": UURL, "type": "text/css", "rel": "stylesheet" }));
  50. _UHD.append(_UDTD, 0, _UHD[0].firstChild);
  51. }
  52. U.MD.IframeLoad(_UDTD, UCB); return _UDTD;
  53. }
  54. /**
  55. * 设置异步加载文件或者iframe
  56. * @param {element} 加载的元素
  57. ----------$("iframe", { "id": _UTP, "name": _UTP, "width": 0, "height": 0, "style": { "display": "none" }, "src": _UDE[i][1] }, _UCS)的iframe对象。
  58. * @param {function} 回调函数
  59. */
  60. U.MD.IframeLoad = function (UDOD, UCB) {
  61. try { var _UCP = UDOD.complete, _URS = UDOD.readyState; } catch (e) { }
  62. if (_UCP == "complete" && ((_URS == "complete" || _URS == "loaded") || _URS == null)) {
  63. U.M.apply(UDOD, UCB)(); return;
  64. }
  65. else {
  66. (UDOD.onreadystatechange) && (UCB = U.M.apply(UDOD, [[UDOD.onreadystatechange], [UCB]]));
  67. UDOD.onreadystatechange = U.M.apply(UDOD, [[U.MD.IframeLoad.AILD, [UDOD, UCB]]]);
  68. }
  69. return UDOD;
  70. }
  71. /**
  72. * onload成功进入
  73. * @param {element} 加载的元素
  74. * @param {function} 回调函数
  75. */
  76. U.MD.IframeLoad.AILD = function (UDOD, UCB) {
  77. var _URS = UDOD.readyState;
  78. (_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);
  79. }
  80. ////判断文件是否存在
  81. //U.MD.ISWJCZ = function () {
  82. // $.ajax(UURL, "", UCB, "", { "type": "get" });
  83. //}
  84. /**
  85. 设置元素loading
  86. 问题:
  87. ----添加一个参数,允许往loading中传递元素。
  88. ----在第一个loading数据量大未出数据的时候,点第二个loading,第二个先获取到数据,会否第二个会先出效果。
  89. ----由于第一次点击数据量大,后台是否能够第二个数据先出。
  90. ----由于第一次点击数据量大,前台loading的效果是否支持第二以及后续点击先出。
  91. *
  92. * @param {element} 元素
  93. * @param {boolean} loading类型
  94. ------------true 、 false 两种loading
  95. */
  96. U.MD.loading = function (UDOD, UTF) {
  97. if (UDOD) {
  98. var i, _UAE, _UDTD, _UDPD = $(UDOD).Parent(),
  99. _UDSD = UDOD ? UDOD.__ULOADElement__ : null, //该元素的loading元素
  100. _USE = { width: "", height: "", overflow: "", padding: "", borderWidth: "", minHeight: "", minWidth: "", cssText: "" }; //loading设置样式区域
  101. if (_UDSD) {//loading存在添加计数
  102. if (UDOD != _UDSD) { _UDSD.P++; }
  103. }
  104. else { //无loading 需要loading的情况
  105. _UDSD = UDOD.__ULOADElement__ = $$("div", { "P": 0, "className": UDOD.className, //这个为loading元素
  106. "style": { "cssText": UDOD.style.cssText + ";" + ($(UDOD).css("display") == "none" ? "display:block" : "") },
  107. "onresize": [[U.MD.loading.Donresize, ["this"]]]
  108. });
  109. if (UTF === true) {//loading样式1
  110. $$("div", { "style": { "cssText": "overflow:hidden;width:40px;height:20px;background:url('/img/loading.gif') 0px 0px no-repeat;margin:auto"} }, _UDSD);
  111. }
  112. else { //loading样式2
  113. $$("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);
  114. }
  115. try { _UDPD.insertBefore(_UDSD, UDOD); } //loading 添加到指定的位置
  116. catch (e) { }
  117. //loading样式设置
  118. U.MD.loading.Donresize(_UDSD, UDOD, UTF);
  119. _UAE = UDOD.style;
  120. _$(_USE).Each(function (USV, UTP) { _USE[UTP] = _UAE[UTP]; });
  121. //原元素缩小
  122. (UDOD = $(UDOD)).addAttrArray({ "__UCS__": _USE, "style": { "cssText": "width:0px;overflow:hidden;height:0px;padding:0;min-height:0px;min-width:0px;border-width:0px;"} });
  123. }
  124. return _UDSD;
  125. }
  126. }
  127. /**
  128. * loading变化设置
  129. * @param {element} 当前loading元素
  130. */
  131. U.MD.loading.Donresize = function (UDOD, UDTD, UTF) {
  132. if (UDOD["P"] > -1) { //loading变化设置
  133. var _UDAD = $("div", UDOD),
  134. _UH = $(UDOD).height() - _UDAD[0].offsetHeight; //loading大小变化
  135. _UDAD[0].style.top = (_UH > 0 ? _UH : 0) / 2 + "px"; //loading图片位置设定
  136. }
  137. else { //取消loading
  138. U.MD.uploading(UDOD);
  139. }
  140. }
  141. /**
  142. * 取消loading
  143. * @param {element} 当前loading元素
  144. */
  145. U.MD.uploading = function (UDOD) {
  146. UDOD = UDOD[0] || UDOD; //需要loading元素
  147. var i, _UAE = ["__ULOADElement__", "__UCS__"], //loading元素遗留参数
  148. _UDTD = UDOD[_UAE[0]], //loading
  149. _UME = UDOD[_UAE[1]], //需loading元素原样式
  150. _UCE = UDOD.style,
  151. _UDE = { "width": "0px", "height": "0px", "overflow": "hidden", "padding": "0px", "borderWidth": "0px", "minHeight": "0px", "minWidth": "0px" }; //元素变回参数
  152. //判断元素是否已经可以结束loading
  153. if (_UDTD && ((_UDTD["P"]--) == 0)) {
  154. for (i in _UDE) {
  155. if (_UDE.hasOwnProperty(i)) {
  156. //设置或者取消原参数
  157. if (_UDE[i] == _UCE[i]) { _UDE[i] = _UME[i]; }
  158. else { delete _UDE[i]; }
  159. }
  160. };
  161. UDOD["__UCS__"] = null; //设置样式
  162. $(_UDTD).remove(); //移除loading
  163. $(UDOD).addAttrArray({ "style": _UDE }); //原loading元素样式回归
  164. //清除残留参数
  165. try { delete UDOD[_UAE[0]]; delete UDOD[_UAE[1]] }
  166. catch (e) {
  167. UDOD.removeAttribute(_UAE[0]);
  168. UDOD.removeAttribute(_UAE[1]);
  169. } return true;
  170. }
  171. }
  172. //#endregion