NotUse.js 121 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954
  1. //----------------------------------------------------
  2. /*-----------------------------------------未被使用的函数-------------------------------------------------------------------------------*/
  3. //模块化编程,未使用到
  4. U.UF.C.define = function () {
  5. var get, _UT, _UAE, _UME = {}, _ = function (UA, UB, UC) { return new _UAE.init(UA, UB, UC); } //require, exports, module
  6. _.prototype = _UAE = {
  7. entity: {},
  8. init: function (UA, UB, UC) { //初始化使用
  9. var _UDE, _UL = arguments.length;
  10. _UDE = _UL == 1 ? "" : "";
  11. },
  12. load: function (URE) { //预加载模块
  13. var _UPE = this.path(URE), _UAE = (this.entity[_UPE] = new _UT(_UPE, this)); //获取值
  14. U.UF.DL.asynLoadJs(_UPE, "js", U.UF.C.apply(this, [[this.cb]])); //获取
  15. },
  16. cb: function () { //加载成功
  17. },
  18. path: function (URE) { //获取路径
  19. var i, _UTH, _UPE = "", _UDE = URE.split("/");
  20. switch (_UDE[0]) { case "": _UPE = _UME.base || window; break; case ".": _UPE = ""; break; default: break; }
  21. _UPE += (_UDE.length > 1 ? (_UME.paths[(_UTH = _UDE.slice(-1).join("/"))] || _UTH) : "") + (_UME.alias[_UDE[0]] || _UDE[0]); _("", "", _UPE);
  22. return _UPE;
  23. },
  24. get: function (UPE) { //获取实体值
  25. return this.entity[_UPE] || (this.entity[_UPE] = new _UT(_UPE, this));
  26. },
  27. set: function () { //设置值
  28. }
  29. };
  30. get = function () { }
  31. //模块记录类
  32. _UT = function () { var _UDE = arguments;U.UF.C.AddObj(this, { url: _UDE[0], et: _UDE[1] }); }
  33. //方法
  34. _UT.prototype = {
  35. get: function () { //搜索
  36. },
  37. set: function () { //设置
  38. }
  39. }
  40. //配置文件
  41. _.config = function (UDE) {
  42. var i, _UAE; _UME = UDE || { base: "./", alias: {}, vars: {}, map: [], preload: [], charset: "utf-8", paths: {} }; //模块初始化 base 路径 alias 识别 vars 变量映射 map 路径映射 preload预加载 charset 编码 paths路径配置
  43. _UAE = _UME.preload; for (i = 0; i < _UAE.length; i++) { _.use(_UAE[i]); } //初始化
  44. }
  45. //引用
  46. _.use = function (URE) { _(URE); }
  47. _UAE.init.prototype = _UAE; return _;
  48. }
  49. /**
  50. * 判断元素是否是上级元素的的子元素
  51. *
  52. * @param {element} 该元素为父元素
  53. * @param {element} 需要判断的元素
  54. * @return {boolean} 获取元素的大小
  55. */
  56. /*U.UF.EL.isChild = function (UDOD, UDTD) {
  57. if (UDOD && UDTD) {
  58. if (UDOD.contains) { //ie chrome 兼容
  59. if (UDOD.contains(UDTD)) {
  60. return true;
  61. }
  62. }
  63. else if (UDOD.compareDocumentPosition) { //firefox
  64. if (!(!!(UDOD.compareDocumentPosition(UDTD)))) {
  65. return true;
  66. }
  67. }
  68. }
  69. return false;
  70. }*/
  71. /**
  72. * 获取当前元素上级的可编辑元素
  73. *
  74. * @param {element} 当前元素
  75. * @return {element} 可编辑的元素
  76. */
  77. /*U.UF.EL.getAncestorEditElement = function (UDOD) {
  78. var _UDBD = document.body;
  79. while (UDOD && _UDBD != UDOD) {
  80. if (UDOD.tagName) {
  81. if ("textarea,input".indexOf(UDOD.tagName.toLocaleLowerCase()) > -1 || UDOD.contentEditable == "true") { //可编辑元素
  82. break;
  83. }
  84. }
  85. UDOD = U.selectEl(UDOD).Parent();
  86. }
  87. return UDOD;
  88. }*/
  89. /**
  90. * 获取children不为文本
  91. *
  92. * @param {element} 当前元素
  93. * @param {string} 父亲的id
  94. * @return {array} 获取所有的子节点
  95. */
  96. /*U.UF.EL.getChildrenNoText = function (UAE, UTP) {
  97. var i, //用于循环
  98. _UDE = []; //用于存放数据且返回
  99. for (i = 0; i < UAE.length; i++) {
  100. if (UAE[i].nodeType == 1 && (!UTP || UTP.indexOf(UAE[i].tagName.toLowerCase()) == -1)) {
  101. _UDE.push(UAE[i])
  102. };
  103. }
  104. return _UDE;
  105. }*/
  106. /**
  107. * 获取元素offsetParent 兼容ie8-
  108. *
  109. * @param {element} 元素
  110. * @param {boolean} 是否从上级开始找起
  111. * @param {string} 规定的position值
  112. * @return {elememt} offsetParent
  113. */
  114. /*U.UF.EL.offsetParent = function (UDOD, UTF, UPT) {
  115. var _UTP, _UDBD = document.body;
  116. (!UTF) && (UDOD = UDOD.offsetParent);
  117. while (UDOD && UDOD != _UDBD) {
  118. _UTP = U.UF.EL.getStyle(UDOD, "position");
  119. if ((!UPT && _UTP != "static") || (_UTP == UPT)) {
  120. break;
  121. }
  122. UDOD = UDOD.offsetParent;
  123. }
  124. return UDOD || _UDBD;
  125. }*/
  126. //#region 首页播放器
  127. //播放器用户信息区域
  128. U.UF.MPlayer.NBF = function (UDE, UIF, UTF, UAE) {
  129. U.UF.MPlayer.SYBFYY(UDE, null, UTF, UIF, UAE); U.UF.MPlayer.JJYYSJ(0); //加载音乐
  130. }
  131. //直接播放音乐
  132. U.UF.MPlayer.SYBFYY = function (UDE, UDMD, UTF, UIF, UAE) {
  133. var _UGE = U.MD.D.H.ET["FL"], _UDOD = U.selectEl("#UD_MP"), _UDTD = _UDOD.find(".UD_MPRLSL").find("div"); UIF = UIF || (US.userInfo.userid ? US.userInfo : UDE);
  134. if (_UGE["Entity"] != UDE) { //切换歌曲
  135. U.selectEl(_UDTD.find("img", 0)[0] || $$("img", {}, _UDTD[0])).addAttrArray({ "onerror": U.MD.C.imgError, "title": _UDTD[4].innerText = UIF.UserNickName || UIF.UserName, "alt": _UDTD[4].innerText, "src": U.MD.C.getHeadImage(UIF.UserThumbnailImageHead) });
  136. _UDTD[1].style.display = "block"; _UDTD[5].innerText = UDE.UserallDirectoryName || UDE.UserFilesName;
  137. _UGE["Entity"] = UDE; _UGE["UBMT"] = UTF; (!UTF) && (setTimeout(function(){U.UF.MPlayer.AsynSYBFYY(UDE);}), U.UF.MPlayer.ZPYY([_UDOD.find(".UD_MPLZ")[0], _UDOD.find(".UD_SYMRTLTLO")[0]], true));
  138. _UGE["LOD"] = _UDTD = _UDOD.find(".UD_MPRLX").find("div"); _UDTD[2].style.width = _UDTD[3].style.width = _UDTD[4].style.left = "0px"; _UDTD[0].innerText = _UDTD[5].innerText = "00:00"; //
  139. _UDTD = _UGE["PF"]["OB"]; (_UDTD) && (_UDTD.className = "UD_MPRRROXO"); (UDMD) && ((_UGE["PF"]["OB"] = UDMD).className = "UD_MPRRROXO UD_MPRRROXOO");
  140. }
  141. else { _UDOD.find(".UD_MPLZ")[0].onclick(); } //暂停播放
  142. }
  143. //异步播放音乐
  144. U.UF.MPlayer.AsynSYBFYY = function (UDE) {
  145. var _UDOD = U.selectEl("#UD_MP")[0], _UDTD = U.selectEl(".UD_SYMMLSYTO", _UDOD); _UIE = _UDTD[0].offsetHeight / _UDTD.Parent().offsetHeight;
  146. U.MD.D.H.ET["FL"]["MO"].loadAplay(US.FILESYSTEMURL + UDE.UserFilesServerName, _UIE); //播放器音乐
  147. }
  148. //弹出音乐查看
  149. U.UF.MPlayer.TCCKYY = function (UDOD) {
  150. if (!U.MD.U.L.isLogin()) { //登录用户使用
  151. var i, _UDE, _UIE, _UTP, _UDAD = U.selectEl(UDOD).parentElement().childs();
  152. for (i = 0; i < 2; i++) { UDOD == _UDAD[i] && _UDAD[i + 2].style.display != "block" ? (_UIE = i) : (_UDAD[i + 2].style.display = "none"); } //弹出和缩小
  153. (_UIE != null && (U.UF.F.topWindow(_UDAD[_UIE + 2]), (_UDAD = _UDAD.childs(_UIE + 2, 1)) && !_UDAD.Child().length)) && (_UDAD.addAttrArray({ "innerText": "", "onscroll": U.UF.EV.scrollLoad({function(){U.UF.MPlayer.GDTCCKYY(_UIE, _UDAD[0]) },_UDAD.addAttrArray) })[0], U.UF.MPlayer.GDTCCKYY(_UIE, _UDAD[0], 1)); //滚动加载查看
  154. }
  155. }
  156. //滚动加载音乐
  157. U.UF.MPlayer.GDTCCKYY = function (UIE, UDOD, UP) {
  158. UP = UP || this.P + 2;
  159. var _UDE, _UI;
  160. var _UGE = U.MD.D.H.ET;
  161. var _UIF = US.userInfo;
  162. UIE ? (_UDE = U.Json(U.MD.DK.M.diskOperatingSwitch(US.userInfo.userid)[0]).select({ "UserDirectoryExtendType": "mp3" })) : (_UDE = _UGE["UL"]["WS"][0]);
  163. _UI = _UDE.length;
  164. if (_UDE) {
  165. _UDE = U.MD.D.D.FYGBL[null, _UDE], UP, [100, _UI];
  166. if (_UDE[0] && _UDE[0].length) {
  167. U.UF.MPlayer.SYYYCK(_UDE[0], UDOD, UIE);
  168. }
  169. else {
  170. if (UIE || _UI % 100) { this.P--; }
  171. else {
  172. U.UF.MPlayer.GSDSXS(_UI, null, function(){U.UF.MPlayer.GDTCCKYY(UIE, UDOD, UP);});
  173. }
  174. }
  175. }
  176. }
  177. //音乐查看
  178. U.UF.MPlayer.SYYYCK = function (UDE, UDOD, UIE) {
  179. var i, _UTF, _UDTD, _UDSD, _UIF = US.userInfo, _UL = U.selectEl(UDOD).Child().length, _UDFD = $$("frag"), _UGE = U.MD.D.H.ET["FL"], _UCE = _UGE["Entity"] || {};
  180. for (i = 0; i < UDE.length; i++) {
  181. _UDTD = $$("div", { "className": "UD_MPRRROXO" + ((_UTF = (_UCE["UserFilesID"] ? (_UCE["UserFilesID"] == UDE[i]["UserFilesID"]) : (_UCE["UserDirectoryID"] == UDE[i]["UserDirectoryID"]))) ? " UD_MPRRROXOO" : ""), "ondblclick": function(){U.UF.MPlayer.JJYYSJ, [UIE]], [U.UF.MPlayer.SYBFYY(UDE[i], this);} }, _UDFD);
  182. _UIF = UIE ? UDE[i] : _UIF; (_UTF) && (_UGE["PF"]["OB"] = _UDTD);
  183. $$("div", { "className": "UD_MPRRROXOL UTDF", "innerHTML": _UL + 1 + i }, _UDTD);
  184. _UDSD = $$("div", { "className": "UD_MPRRROXOZ" }, _UDTD);
  185. $$("img", { "onerror": U.MD.C.imgError, "title": _UIF.UserNickName, "onclick": function(){U.MD.U.V.ViewOtherUserInfo(_UIF.UserId);}, "src": U.MD.C.getHeadImage(_UIF.UserThumbnailImageHead) }, _UDSD);
  186. $$("div", { "className": "UD_MPRRROXON UTDF", "innerHTML": UDE[i].UserFilesName || UDE[i].UserallDirectoryName }, _UDTD);
  187. $$("div", { "className": "UD_MPRRROXOR UTDF", "innerHTML": "00:00" }, _UDTD);
  188. }
  189. UDOD.appendChild(_UDFD);
  190. }
  191. //聚焦当前播放随机还是我的
  192. U.UF.MPlayer.JJYYSJ = function (UIE) {
  193. var i, _UDAD = U.selectEl("#UD_MP.UD_MPRRR").childs();
  194. for (i = 0; i < 2; i++) { _UDAD[i == UIE ? "addClass" : "removeClass"]("UD_MPRRRLO", i); }
  195. }
  196. //#endregion
  197. //Array函数
  198. {
  199. reduce: Array.prototype.reduce || function (cb, UTI) {
  200. var i = 0, _UL = this.length >> 0; (UTI == null) && (i = 1, UTI = this[0]);
  201. while (i++ < _UL) { UTI = cb(UTI, this[i], i, this); } return UTI;
  202. },
  203. reduceRight: Array.prototype.reduceRight || function (cb, UTI) {
  204. var _UL = this.length >> 0; (UTI == null) && (_UL -= 1, UTI = this[this.length - 1]);
  205. while (_UL-- > -1) { UTI = cb(UTI, this[i], i, this); }
  206. },
  207. includes: Array.prototype.includes || function (UVE, US) { //搜索值是否存在
  208. var _UDE = Object(this), _UL = _UDE.length >> 0; US = US || US < 0 ? _UL + US : US; (US < 0) && (US = 0);
  209. for (; US < _UL; US++) { if (_UDE[US] === UVE && (UVE !== UVE && _UDE[US] !== _UDE[US])) { return true; } } return false;
  210. }
  211. }
  212. // ---------------------添加对象操作-----------------------------
  213. //javascript 1.85兼容
  214. U.UF.C.AddObj(Object, {
  215. keys: Object.keys || function (UDE) { //返回函数的值
  216. var _USE = ["constructor", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "toLocaleString", "toString", "valueOf"], _UTF = ({ toString: null }).propertyIsEnumerable("toString"); //判断自定义属性和基础属性冲突是否可列举
  217. var i, _UGE = [], _UFT = U.UF.Ut.isForObj(UDE) || U.UF.C.isString(UDE);
  218. if (_UFT) {
  219. if (_UFT === true || _UFT == "Array") { for (i = 0; i < UDE.length; i++) { _UGE.push(i); } }
  220. else { for (i in UDE) { (UDE.hasOwnProperty(i)) && (_UGE.push(i)); } }
  221. if (_UTF) { for (i = 0; i < _USE.length; i++) { (UDE.hasOwnProperty(_USE[i])) && (_UGE.push(_USE[i])); } }
  222. return _UGE;
  223. }
  224. else { throw new TypeError(UDE + " is not an object"); } //错误 不为object
  225. },
  226. assign: Object.assign || function (UGE) {//合并
  227. var j, _UTP, _UME, _UKE, i = 1, _UDE = arguments, _UCE = Object(UGE);
  228. if (!_UCE) { throw new Error("can't convert null to object"); } //参数无效
  229. if (U.UF.C.isString(UGE)) { _UCE = {}; i = 0; } //第一个参数为string
  230. try {
  231. for (; i < _UDE.length; i++) {
  232. if (_UDE[i] != null) {//getOwnPropertyDescriptor
  233. _UKE = Object.keys((_UME = Object(_UDE[i]))); //获取可枚举的属性
  234. for (j = 0; j < _UKE.length; j++) { _UCE[_UKE[j]] = _UME[_UKE[j]]; } //这里不区分自读
  235. }
  236. }
  237. } catch (e) { }
  238. return _UCE;
  239. },
  240. create: Object.create || function () {//创建一个新对象
  241. var _ = function () { }
  242. //设置
  243. return function (UDE) {
  244. var _USE, _UGE, _UCE = arguments;
  245. if (U.UF.C.isObject(UDE)) { throw new Error(UDE + " is not an object or null"); } //不为对象
  246. _.prototype = UDE; _USE = new _(); _.prototype = null;
  247. if (_UCE[1]) { _UGE = Object(_UCE[1]); for (i in _UGE) { if (_UGE.hasOwnProperty(i)) { if (Object.defineProperty && _UGE && (_UGE.value !== undefined || U.UF.C.isFunction(_UGE.get))) { Object.defineProperty(_USE, i, _UGE); } else { _USE[i] = _UGE[i]; } } } }
  248. return _USE;
  249. }
  250. },
  251. defineProperties: Object.defineProperties || function (UDE, UGE) { //对象多个设置
  252. if (Object.defineProperty) {
  253. if (!U.UF.Ut.isForObj(UDE) || !U.UF.Ut.isForObj(UGE)) { throw new Error("Object.defineProperties requires more than 0 arguments"); } //error
  254. else {
  255. for (var i in UGE) {
  256. if (UGE.hasOwnProperty(i)) {
  257. if (U.UF.Ut.isForObj(UGE[i])) { Object.defineProperty(UDE, i, UGE[i]); }
  258. else { throw new Error("value is not a non-null object"); }
  259. }
  260. }
  261. }
  262. }
  263. else { throw new Error("Browser version is too low"); }
  264. },
  265. getOwnPropertySymbols: Object.getOwnPropertySymbols || function (UDE) { //获取Symbols
  266. var i, _USE = [];
  267. for (i in UDE) { (UDE.hasOwnProperty(i) && (U.UF.C.isSymbol(UDE[i])) && _USE.push(UDE[i])); }
  268. return _USE;
  269. },
  270. getPrototypeOf: Object.getPrototypeOf || function (UDE) {//判断原型是否是指定的
  271. if (U.UF.C.isFunction(UDE)) { return UDE.prototype; }
  272. else { throw new Error(UDE + " is not an object"); }
  273. },
  274. is: Object.create || function (x, y) {//判断是否相等
  275. if (x === y) { return x !== 0 || 1 / x === 1 / y; } //-0 !=0
  276. else { return U.UF.Ut.isNaN(x) && U.UF.Ut.isNaN(y); } //NaN == NaN
  277. },
  278. setPrototypeOf: Object.setPrototypeOf || function (UDE, UGE) {//设置源
  279. if (UDE.__proto__) {
  280. if (!U.UF.C.isObject(UDE)) { throw new Error(UDE + " is not an object"); }
  281. else if (!U.UF.C.isObject(UDE)) { throw new Error("Object.preventExtensions requires more than 0 arguments"); }
  282. UDE.__proto__ = UGE;
  283. }
  284. else { throw new Error("Browser version is too low"); }
  285. },
  286. observe: Object.observe || function () {
  287. }
  288. });
  289. /*----------------------------------------------------------------未使用的ES6规范中的一些函数--------------------------------------------------------------------*/
  290. // ES6 规范中的新数据类型Symbol的 使用,如果没有Symbol数据类型,则让Symbol支持其它浏览器
  291. if (!window.Symbol) {
  292. window.Symbol = function (UK) {
  293. var symbol = function (UK) { this.keyvalue = UK || Guid().newGuid(); };
  294. U.UF.C.AddObj(symbol, _UME = {
  295. iterator: function () { },
  296. match: function () { },
  297. replace: function () { },
  298. search: function () { },
  299. split: function () { },
  300. hasInstance: function () { },
  301. isConcatSpreadable: function () { },
  302. unscopables: function () { },
  303. species: function () { },
  304. toPrimitive: function () { },
  305. toStringTag: function () { },
  306. "for": function () { },
  307. keyFor: function () { }
  308. });
  309. U.UF.EV.addPrototype(symbol, {
  310. toString: function () { return this.keyvalue; }
  311. });
  312. return new symbol(UK);
  313. }
  314. }
  315. // es6 Generator 迭代器
  316. window.Generator = function () { }
  317. window.Generator.prototype = {
  318. next: function () { },
  319. close: function () { },
  320. send: function () { },
  321. "throw": function () { }
  322. }
  323. //#region Promise 方法 异步式同步
  324. window.Promise = window.Promise || function () { //resolved rejected
  325. var that, _ = function (fun) { if (this.constructor == Promise) { return Promise.call(this, fun); } else { return new Promise(fun); } }, Promise = function (fun) { var _that = Asyn({ OBJ: this }); fun.call(this, U.UF.C.apply(_that, _that.reject), U.UF.C.apply(_that, _that.resolve)); return this; },
  326. Asyn = (function () { //异步处理
  327. var __, _ = function (UDE) { new __.init(UDE); };
  328. __ = _.prototype = {
  329. init: function (UDE) {
  330. U.selectEl(this).Add(UDE);
  331. },
  332. reject: function () { },
  333. resolve: function () { }
  334. }
  335. __.init.prototype = _; return _;
  336. })();
  337. // this.success = []; this.error = []; this.state = "pending"; that = this;
  338. U.UF.C.AddObj(_, {
  339. reject: function (UDE) { //异步失败处理
  340. var i, _UDE = this.error;
  341. if (U.UF.C.isObject(UDE)) { for (var i = 0; i < _UDE.length; i++) { _UDE[i](UDE); } }
  342. else { }
  343. },
  344. resolve: function (UDE) { //异步条件成功
  345. if (U.UF.C.isObject(UDE)) { }
  346. else { for (var i = 0; i < this.success.length; i++) { this.success[i](UDE); } }
  347. },
  348. join: function () { //处理多个分离的 Promise
  349. },
  350. props: function () { //处理一个 promise 的 map 集合
  351. },
  352. all: function () { //迭代查看
  353. },
  354. race: function (UDE) { //迭代执行
  355. },
  356. any: function () {
  357. },
  358. some: function () {
  359. }
  360. });
  361. Promise.prototype = {
  362. constructor: Promise, length: 1,
  363. then: function (cb, UEB) { //添加异步条件
  364. var _UCE, _USE = this.state;
  365. if (_USE == "pending") { //初始化
  366. (U.UF.C.isFunction(cb)) && (this.success.push(cb));
  367. (U.UF.C.isFunction(cb)) && (this.error.push(cb));
  368. }
  369. else { //已经初始化直接回调
  370. _UCE = _USE == "resolved" ? cb : UEB;
  371. if (U.UF.C.isFunction(_UCE)) { try { _UCE(this.value); } catch (e) { this.reject(e); } }
  372. else { (this[_UCE.substr(-1)] || this[_UCE.substr(-2)])(cb); }
  373. }
  374. return _();
  375. },
  376. "catch": function () { //执行的错误处理
  377. }
  378. };
  379. return _;
  380. };
  381. ////ES6规范定义了一个全新的全局构造函数:代理(Proxy),使用范围很小。
  382. window.Proxies = window.Proxies || function (URE, UPE, UVE) {
  383. var Proxies = function (URE, UPE, UVE) { this.init(URE, UPE, UVE) };
  384. U.UF.C.AddObj(Proxies, {
  385. init: function (URE, UPE, UVE) { //初始化值
  386. U.UF.C.AddObj(URE, { obj: URE, cb: UPE, value: { c: URE} });
  387. },
  388. bind: function () { //绑定变化
  389. },
  390. get: function () { //get的变化回调
  391. },
  392. set: function () { //set变化回调
  393. }
  394. });
  395. if (this.constructor == Proxies) { return Proxies.call(this, URE, UPE, UVE); }
  396. else { return new Proxies(URE, UPE, UVE); }
  397. }
  398. // 新类型使用
  399. window.Map = window.Map || function () {
  400. }
  401. window.Set = window.Set || function () {
  402. }
  403. window.WeakMap = window.WeakMap || function () {
  404. }
  405. window.WeakSet = window.WeakSet || function () {
  406. }
  407. window.Symbol = window.Symbol || function () {
  408. var symbol = function (UK) { this.keyvalue = UK || Guid().newGuid(); };
  409. U.UF.C.AddObj(symbol, {
  410. iterator: function () { },
  411. match: function () { },
  412. replace: function () { },
  413. search: function () { },
  414. split: function () { },
  415. hasInstance: function () { },
  416. isConcatSpreadable: function () { },
  417. unscopables: function () { },
  418. species: function () { },
  419. toPrimitive: function () { },
  420. toStringTag: function () { },
  421. "for": function () { },
  422. keyFor: function () { }
  423. });
  424. //添加方法
  425. U.UF.EV.addPrototype(symbol, {
  426. toString: function () { return this.keyvalue; }
  427. });
  428. return new symbol(UK);
  429. }
  430. window.TypeError = function () { }
  431. U.UF.C.Number.EPSILON = Number.EPSILON || 2.220446049250313e-16;
  432. U.UF.C.Number.MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || Math.pow(2, 53) - 1;
  433. U.UF.C.Number.MAX_VALUE = Number.MAX_VALUE || 1.79e+308;
  434. U.UF.C.Number.POSITIVE_INFINITY = Number.POSITIVE_INFINITY || Infinity;
  435. U.UF.C.Number.NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY || Infinity;
  436. U.UF.C.Number.isFinite = Number.isFinite || function (value) {//如果 number 是有限数字(或可转换为有限数字),那么返回 true。否则,如果 number 是 NaN(非数字),或者是正、负无穷大的数,则返回 false。
  437. return U.UF.C.isNumber(value) && isFinite(value);
  438. };
  439. U.UF.C.Number.isSafeInteger = Number.isSafeInteger || function (value) {//方法用来判断传入的参数值是否是一个"安全整数"
  440. return U.UF.C.isNumber(value) && isFinite(value);
  441. };
  442. U.UF.C.Number.isNaN = Number.isNaN || function (value) {//判断是否是NaN
  443. return U.UF.C.isNumber(value) && isNaN(value);
  444. };
  445. U.UF.C.Number.isInteger = Number.isInteger || function (value) {//确定传入的值是否是一个整数。
  446. return U.UF.C.isNumber(value) && isFinite(value) && Math.floor(value) === value;
  447. };
  448. U.UF.C.Number.parseFloat = Number.parseFloat || function (value) {//转换值为浮点型
  449. return parseFloat(value)
  450. };
  451. U.UF.C.Number.parseInt = Number.parseInt || function (value) {//转换值为整型
  452. return parseInt(value);
  453. };
  454. // from: Array.from || function () { //对象转化成数组类型
  455. // var i, _UL, _URE, _UVE, _UTE = this, _UDE = arguments, _UIE = _UDE[0];
  456. // if (_UIE) {
  457. // if (_UDE.length < 2 || (_UDE.length > 1 && U.UF.C.isFunction(_UDE[1]))) { //
  458. // _UIE = Object(_UIE); _UL = U.UF.C.toInteger(_UIE.length); //转化成对象
  459. // _URE = U.UF.C.isFunction(_UTE) ? Object(new _UTE(_UL)) : new Array(_UL); _URE.length = _UL; //新建值
  460. // for (i = 0; i < _UL; i++) { _UVE = _UIE[i]; _URE[i] = _UDE[1] ? _UDE[1].call(_UDE[2], _UVE, i) : _UVE; }
  461. // return _URE;
  462. // }
  463. // else { throw new TypeError("Array.from: when provided, the second argument must be a function"); } //非回调函数
  464. // }
  465. // else { throw new TypeError("Array.from requires an array-like object - not null or undefined"); } //参数问题
  466. // },
  467. // observe: Array.observe || function () {
  468. // },
  469. // of: Array.of || function () { //arguments 转化成对象
  470. // return Array.prototype.slice.call(arguments);
  471. // },
  472. // MAX_ARRAY_INDEX: 9007199254740991 //最大循环次数
  473. /*----------------------------------------------------------------未使用的ES6规范中的一些函数--------------------------------------------------------------------*/
  474. // ES6 规范中的新数据类型Symbol的 使用,如果没有Symbol数据类型,则让Symbol支持其它浏览器
  475. if (!window.Symbol) {
  476. window.Symbol = function (UK) {
  477. var symbol = function (UK) { this.keyvalue = UK || Guid().newGuid(); };
  478. U.UF.C.AddObj(symbol, _UME = {
  479. iterator: function () { },
  480. match: function () { },
  481. replace: function () { },
  482. search: function () { },
  483. split: function () { },
  484. hasInstance: function () { },
  485. isConcatSpreadable: function () { },
  486. unscopables: function () { },
  487. species: function () { },
  488. toPrimitive: function () { },
  489. toStringTag: function () { },
  490. "for": function () { },
  491. keyFor: function () { }
  492. });
  493. U.UF.EV.addPrototype(symbol, {
  494. toString: function () { return this.keyvalue; }
  495. });
  496. return new symbol(UK);
  497. }
  498. }
  499. // es6 Generator 迭代器
  500. window.Generator = function () { }
  501. window.Generator.prototype = {
  502. next: function () { },
  503. close: function () { },
  504. send: function () { },
  505. "throw": function () { }
  506. }
  507. //#region Promise 方法 异步式同步
  508. window.Promise = window.Promise || function () { //resolved rejected
  509. var that, _ = function (fun) { if (this.constructor == Promise) { return Promise.call(this, fun); } else { return new Promise(fun); } }, Promise = function (fun) { var _that = Asyn({ OBJ: this }); fun.call(this, U.UF.C.apply(_that, _that.reject), U.UF.C.apply(_that, _that.resolve)); return this; },
  510. Asyn = (function () { //异步处理
  511. var __, _ = function (UDE) { new __.init(UDE); };
  512. __ = _.prototype = {
  513. init: function (UDE) {
  514. U.selectEl(this).Add(UDE);
  515. },
  516. reject: function () { },
  517. resolve: function () { }
  518. }
  519. __.init.prototype = _; return _;
  520. })();
  521. // this.success = []; this.error = []; this.state = "pending"; that = this;
  522. U.UF.C.AddObj(_, {
  523. reject: function (UDE) { //异步失败处理
  524. var i, _UDE = this.error;
  525. if (U.UF.C.isObject(UDE)) { for (var i = 0; i < _UDE.length; i++) { _UDE[i](UDE); } }
  526. else { }
  527. },
  528. resolve: function (UDE) { //异步条件成功
  529. if (U.UF.C.isObject(UDE)) { }
  530. else { for (var i = 0; i < this.success.length; i++) { this.success[i](UDE); } }
  531. },
  532. join: function () { //处理多个分离的 Promise
  533. },
  534. props: function () { //处理一个 promise 的 map 集合
  535. },
  536. all: function () { //迭代查看
  537. },
  538. race: function (UDE) { //迭代执行
  539. },
  540. any: function () {
  541. },
  542. some: function () {
  543. }
  544. });
  545. Promise.prototype = {
  546. constructor: Promise, length: 1,
  547. then: function (cb, UEB) { //添加异步条件
  548. var _UCE, _USE = this.state;
  549. if (_USE == "pending") { //初始化
  550. (U.UF.C.isFunction(cb)) && (this.success.push(cb));
  551. (U.UF.C.isFunction(cb)) && (this.error.push(cb));
  552. }
  553. else { //已经初始化直接回调
  554. _UCE = _USE == "resolved" ? cb : UEB;
  555. if (U.UF.C.isFunction(_UCE)) { try { _UCE(this.value); } catch (e) { this.reject(e); } }
  556. else { (this[_UCE.substr(-1)] || this[_UCE.substr(-2)])(cb); }
  557. }
  558. return _();
  559. },
  560. "catch": function () { //执行的错误处理
  561. }
  562. };
  563. return _;
  564. };
  565. ////ES6规范定义了一个全新的全局构造函数:代理(Proxy),使用范围很小。
  566. window.Proxies = window.Proxies || function (URE, UPE, UVE) {
  567. var Proxies = function (URE, UPE, UVE) { this.init(URE, UPE, UVE) };
  568. U.UF.C.AddObj(Proxies, {
  569. init: function (URE, UPE, UVE) { //初始化值
  570. U.UF.C.AddObj(URE, { obj: URE, cb: UPE, value: { c: URE} });
  571. },
  572. bind: function () { //绑定变化
  573. },
  574. get: function () { //get的变化回调
  575. },
  576. set: function () { //set变化回调
  577. }
  578. });
  579. if (this.constructor == Proxies) { return Proxies.call(this, URE, UPE, UVE); }
  580. else { return new Proxies(URE, UPE, UVE); }
  581. }
  582. // 新类型使用
  583. window.Map = window.Map || function () {
  584. }
  585. window.Set = window.Set || function () {
  586. }
  587. window.WeakMap = window.WeakMap || function () {
  588. }
  589. window.WeakSet = window.WeakSet || function () {
  590. }
  591. ////判断是否为url
  592. //U.UF.S.url = function (UDE, UTF) {
  593. // var _USE;
  594. // switch (UTF) {
  595. // case "stringify": //转化成url字符串
  596. // _USE = "";
  597. // if (U.UF.C.isObject(UDE)) {
  598. // _$.forEach(UDE,function (UA, UB) {
  599. // (_USE) && (_USE); _USE += UB + "=" + UA;
  600. // })
  601. // }
  602. // break;
  603. // case "parse": //url转化成对象
  604. // if (U.UF.C.isString(UDE)) {
  605. // }
  606. // break;
  607. // }
  608. // return _USE;
  609. //}
  610. /**
  611. * 弹出添加窗体
  612. *
  613. * @param {object} 添加进入的元素
  614. * @param {function} 添加的用户信息
  615. * @return {element} 选择联系人窗体
  616. */
  617. U.MD.F.J.ANewFrom = function (UDE, cb) {
  618. var _UDOD = U.selectEl("#UD_SYT").clone(true)[0], //选择联系人元素
  619. _UDAD = U.selectEl("div", _UDOD).addAttrArray({ id: "" });
  620. (cb) && (_UDAD[_UDAD.length - 1].onclick = cb);
  621. (UDE) && (U.MD.F.J.printSelectFriend($(_UDOD).Child()[1], UDE)); //选择联系窗体内容输出
  622. new U.UF.UI.form("添加好友",
  623. _UDOD,
  624. {
  625. "resize": function(){U.MD.I.ImgSize(_UDOD, _UFID);},
  626. "id": "US_F_" + Guid.guidNoDash(),
  627. "style": {
  628. "display": "250px",
  629. "height": "490px"
  630. }
  631. },
  632. {
  633. isenlarge: false,
  634. isnarrow: false
  635. }).form;
  636. // new U.UF.UI.form({ min: false, max: false, id: "US_F_" + Guid.guidNoDash(), //创建弹出选择联系人窗体
  637. // style: { width: "250px", height: "490px" }, content: _UDOD, title: "添加好友",
  638. // hst: { style: { "padding": "0"} }
  639. // });
  640. U.selectEl(_UDOD).css("display", "block");
  641. return _UDOD; //创建窗体
  642. }
  643. //直接触发加载1473
  644. U.UF.CD.ULOF = function (cb) {
  645. U.selectEl().ready(function(){U.UF.CD.loadPageCrossDomain(null, cb);});
  646. }
  647. //打印方式
  648. U.UF.CD.print = function () {
  649. var _ = function () { }
  650. }
  651. /*----------------------------------------暂时未使用的函数,手机端也没使用----------------------------------------------*/
  652. //客户端摄像功能,电脑端,手机端均可运行。
  653. U.UF.CI.photo = function () {
  654. var _UJE, _ = function (UDOD, UDE) { new _.get.init(UDOD, UDE); }
  655. _UJE = _.get = {
  656. init: function (UDOD, UDE) { //初始化
  657. var i, _UAE = ["getUserMedia", "webkitGetUserMedia", "mozGetUserMedia", "msGetUserMedia"];
  658. for (i = 0; i < _UAE.length; i++) { if (navigator[_UAE[i]]) { navigator[_UAE[i]]({ video: true, audio: true }, function(){this.Asyn();}, this.err); break; } } //初始化
  659. U.UF.C.AddObj(this, { UDPD: UDOD || document.body, UIE: i, UAE: UDE });
  660. },
  661. Asyn: function (USE) { //回调异步
  662. this.se = USE; this.vi = U.MD.V.vi({ autoplay: "true" }, this.UDPD).create((window.URL || window.webkitURL) ? (window.URL || window.webkitURL).createObjectURL(USE) : USE); //创建视频显示 window[(this.UIE == 1 ? "webkitURL" : "URL")]
  663. (this.UAE) && ($(this.vi.vi).addAttrArray(this.UAE)); this.cv = U.CV.canvas(null, this.UDPD, { "style": { "width": "auto", "height": "100%", "visibility": "hidden"} }); //创建使用
  664. },
  665. err: function (UE) { //错误处理
  666. var _UTH = "系统未能获取到摄像头,请确保摄像头已正确安装。或尝试刷新页面,重试";
  667. if (UE.PERMISSION_DENIED || (UE.name == "PermissionDeniedError")) { _UTH = "用户拒绝了浏览器请求媒体的权限"; }
  668. else if (UE.NOT_SUPPORTED_ERROR || (UE.name == "NotSupportedError")) { _UTH = "对不起,您的浏览器不支持拍照功能,请使用其他浏览器"; }
  669. else if (UE.MANDATORY_UNSATISFIED_ERROR || (UE.name == "MandatoryUnsatisfiedError")) { _UTH = "指定的媒体类型未接收到媒体流"; }
  670. U.Alert(_UTH);
  671. },
  672. img: function (UTF) { //截图
  673. var _UAE = Array.prototype.concat(arguments); _UAE.unshift(this.vi.vi); this.cv.dimg.apply(this, _UAE); //生成截图
  674. return this.cv.toImg(UTF);
  675. },
  676. stop: function () { //停止录像和播放
  677. this.se.stop(); this.vi.play(false); //停止播放
  678. },
  679. camera: function () { //录像生成获取
  680. var _ = function () {
  681. }
  682. _.prototype = {
  683. init: function () { //初始化
  684. },
  685. time: function () { //定时监视
  686. },
  687. url: function () { //生成数据
  688. }
  689. }
  690. return _;
  691. },
  692. Rtc: function () { //视频共享
  693. },
  694. get: function () { }, set: function () { }
  695. }
  696. _UJE.init.prototype = _UJE; return _;
  697. } ()
  698. //获取客户端位置
  699. U.UF.CI.getPosition = function () {
  700. var _URL = 6371, _UDE, _ = function (cb, UDE) { //获取客户端地址信息
  701. if (navigator.geolocation) { return new _UDE.init(cb, UDE); }
  702. else { throw new Error("the fucntion in html"); }
  703. },
  704. cb = function (cb) { //获取信息回调
  705. //latitude 纬度 longitude 经度 accuracy 准确度 altitude 海拔高度 altitudeAccuracy 海拔高度准确度 heading 行进方向 speed 速度
  706. var _UDE = event; this.UT = this[this.UST ? "UET" : UST] = _UDE; (cb) && (cb(_UDE)); //回调函数
  707. },
  708. ecb = function () { //错误处理
  709. var UE = event, _UCE = ["尝试获取您的位置信息时发生错误:" + UE.message, "用户拒绝了获取位置信息请求。", "浏览器无法获取您的位置信息。", "获取您位置信息超时。"];
  710. ((this.UDE.error || this.cb)(UE, _UCE[UE.code]) == "restart") && (this.get()); //重启动获取
  711. }
  712. U.UF.C.AddObj(_, _.prototype = _UDE = {
  713. init: function (cb, UDE) { //初始化
  714. U.UF.C.AddObj(this, { UST: null, UET: null, UT: null, id: null, UNE: navigator.geolocation, cb: cb, UDE: UDE, UOE: UDE.op || { enableHighAccuracy: true, timeout: 5000, maximumAge: 0} }); //使用enableHighAccuracy启用gps timeout请求超时 maximumAge缓存数据Infinity
  715. },
  716. exec: function (UTP) { //执行制定的函数
  717. if (UTP) {
  718. var _UNE = this.UNE, _UCB = function(){cb(this.cb);};
  719. _UNE[UTP](_UCB, _UCB, this.UOE); //获取地理位置
  720. }
  721. },
  722. get: function () { //获取gps定位
  723. this.exec("getCurrentPosition");
  724. },
  725. watch: function () { //GPS实时定位
  726. (!this.id) && (this.UST = null, this.exec("watchPosition")); //启用事实导航
  727. },
  728. clear: function () { //关闭实时定位
  729. (this.id) && (this.UNE.clearWatch(this.id), this.id = null);
  730. },
  731. haversine: function (UO, UT, UOS, UTS) { //相隔距离
  732. var _UA, _UOM = UOS.toRadians(), _UTM = UTS.toRadians(), _ULO = (UTS - UOS).toRadians(), _UOT = (UT - UO).toRadians(); //相距弧长
  733. _UA = Math.sin(_ULO / 2) * Math.sin(_ULO / 2) + Math.cos(UOS) * Math.cos(UTS) * Math.sin(_UOT / 2) * Math.sin(_UOT / 2);
  734. return _URL * 2 * Math.atan2(Math.sqrt(_UA), Math.sqrt(1 - _UA));
  735. }
  736. });
  737. _UDE.init.prototype = _UDE; return _;
  738. };
  739. //#region 支付宝接口
  740. //使用支付宝支付
  741. U.UF.DL.C.AD.Alipay = function (UDE, UTF) {
  742. if (UTF) { window.open("http://alp.1473.cn?"); }
  743. }
  744. //#endregion
  745. //#region 微信支付接口
  746. //使用微信支付
  747. U.UF.DL.C.AD.weixin = function (USID, userid, USL, UTF) {
  748. if (UTF) { window.open(); }
  749. }
  750. //#endregion
  751. //#region canvas绘图 在线ps
  752. //canvas接口
  753. U.CV.canvas = function (UDOD, UDPD, UDE) {
  754. return new this.Cinit(UDOD, UDPD, UDE);
  755. }
  756. //创建canvas
  757. U.CV.Cinit = function (UDOD, UDPD, UDE) {
  758. this.UDCD; this.UCE; this.UDCD = UDOD; (!UDOD && UDPD) && (this.create(UDPD, UDE));
  759. }
  760. U.UF.EV.addPrototype(U.CV.Cinit, {
  761. create: function (UDOD, UDE) { //创建canvas对象
  762. this.UDCD = $$("canvas", UDE, UDOD); //创建canvas
  763. this.UCE = this.UDCD.getContext("2d");
  764. return this;
  765. },
  766. oimg: function () { //加载图片成功
  767. var _UTF = event.type == "error", _UDE = Array.prototype.slice.call(arguments);
  768. if (_UTF) { U.Alert("加载图片错误!"); } else { this.dimg.apply(this, _UDE); }
  769. },
  770. dimg: function (UIMG, UX, UY, UW, UH, UDX, UDY, UDW, UDH) { //canvas展示图像
  771. var _UCE = this.UCE, _UDE = Array.prototype.slice.call(arguments), _UME = _UDE.slice(1), _UFE = U.UF.C.apply(this, [[this.oimg, _UME]]); _UDE[1] = _UDE[1] || 0; _UDE[2] = _UDE[2] || 0;
  772. if (typeof UIMG == "string") { _UME.unshift(new Image()); U.selectEl(_UME[0]).addAttrArray({ "src": UIMG, "onload": _UFE, "onerror": _UFE })[0]; } //生成图片
  773. else { if (UIMG.complete || UIMG.complete == null) { _UCE.drawImage.apply(_UCE, _UDE); } else { UIMG.onload = _UFE; } } //执行图片展示
  774. return this;
  775. },
  776. bp: function () { //重置当前路径
  777. this.UCE.beginPath(); //重新启动路径
  778. },
  779. cp: function () { this.UCE.closePath(); }, //路径重回启动
  780. set: function (UDE) { //设置绘图
  781. var i, _UCE = this.UCE; _UCE.beginPath(); //开始设置
  782. if (UDE) { for (i in UDE) { if (typeof UDE[i] == "string") { _UCE[i] = UDE[i]; } else { _UCE[i].apply(_UCE, UDE[i]); } } } //设置值
  783. _UCE.closePath(); return this; //结束设置
  784. },
  785. fill: function (UST) { //有色填充
  786. var _UCE = this.UCE; if (U.UF.C.isString(UST)) { _UCE.fillStyle = UST; } else { _$.Each(UST,function (UVE, UIE) { _UCE[UIE] = UVE; }); } _UCE.fill(); return this; // _UCE.closePath();
  787. },
  788. stroke: function (UST) { //边框填充
  789. var _UCE = this.UCE; if (U.UF.C.isString(UST)) { _UCE.strokeStyle = UST; } else { _$.Each(UST,function (UVE, UIE) { _UCE[UIE] = UVE; }); } _UCE.stroke(); return this; //_UCE.closePath();
  790. },
  791. sLine: function (USE, UDE) { //画线设置
  792. var i, _UCE = this.UCE; if (USE) { this.bp(); _UCE.moveTo(USE[0], USE[1]); } //开始设置
  793. if (UDE) { for (i = 0; i < UDE.length; i++) { _UCE.lineTo(UDE[i][0], UDE[i][1]); } } return this; //设置线条每个点 //结束设置
  794. },
  795. bezier: function () { //设置贝尔画线 2次和3次
  796. var i, _UAE = arguments, _UCE = this.UCE; _UAE.length == 4 ? _UCE.quadraticCurveTo(_UAE[0], _UAE[1], _UAE[2], _UAE[3]) : _UCE.bezierCurveTo(_UAE[0], _UAE[1], _UAE[2], _UAE[3], _UAE[4], _UAE[5]);
  797. return this;
  798. },
  799. fillR: function (UX, UY, UW, UH, UST) { //有色矩形绘制
  800. UW = UW || 100; UH = UH || 100; var i, _UCE = this.UCE; (UST) && (_UCE.fillStyle = UST);
  801. _UCE.fillRect(UX || 0, UY || 0, UW || 100, UH || 100); return this; //生成矩形
  802. },
  803. strokeR: function (UX, UY, UW, UH, UST) {//无色矩形 实际就是边框
  804. var i, _UCE = this.UCE; (UST) && (_UCE.strokeStyle = UST);
  805. this.UCE.strokeRect(UX || 0, UY || 0, UW || 100, UH || 100); return this; //生成矩形
  806. },
  807. rect: function (UX, UY, UW, UH) { //创建画布
  808. this.UCE.rect(UX || 0, UY || 0, UW || 100, UH || 100);
  809. },
  810. clear: function (UX, UY, UW, UH) { //清除矩形
  811. this.UCE.clearRect(UX || 0, UY || 0, UW || this.UDCD.offsetWidth, UH || this.UDCD.offsetHeight); //清理矩形
  812. return this;
  813. },
  814. shadow: function (UDE, UVE) { //阴影
  815. if (U.UF.C.isObject(UDE)) { var _UCE = this.UCE; _$.Each(UDE,function (UVE, UIE) { _UCE["shadow" + UIE] ? _UCE["shadow" + UIE] = UVE : _UCE[UIE] = UVE; }); }
  816. else { _UCE["shadow" + UDE] ? _UCE["shadow" + UDE] = UVE : _UCE[UDE] = UVE; }
  817. },
  818. cap: function (UTF) { //边缘设置
  819. this.UCE.lineCap = { b: "butt", r: "round", s: "square"}[UTF] || UTF || "butt";
  820. },
  821. join: function (UTF) { //join夹角连接样式
  822. this.UCE.lineJoin = { b: "miter", "r": "round", "m": "miter"}[UTF] || UTF || "miter";
  823. },
  824. arc: function (UX, UY, UL, US, UE, UTF, UDE) { //画圆
  825. this.set({ "arc": [UX, UY, UL, US, UE, UTF] }); //设置圆
  826. (UDE) && (this.set(UDE)); return this;
  827. },
  828. arcTo: function (USE, UDE) { //创建弧
  829. if (Array.isArray(UDE)) { this.sLine(UDE[0], UDE.slice(1)); } //创建线
  830. if (USE) { this.arcTo(USE); } //创建弧
  831. },
  832. linearc: function (USE, UME, UBE) { //设置渐变 xStart,yStart,xEnd,yEnd
  833. var i, _UCE = this.UCE, _UGE = _UCE.createLinearGradient.apply(_UCE, USE);
  834. for (i = 0; i < UME.length; i++) { _UGE.addColorStop.apply(UME[i][0], UME[i][1]); } //设置渐变
  835. if (UBE) { for (i = 0; i < UBE.length; i++) { this[UBE[i]](_UGE); } }
  836. },
  837. radialc: function (USE, UDE) {//径向渐变 xStart,yStart,radiusStart,xEnd,yEnd,radiusEnd
  838. var i, _UCE = this.UCE, _UGE = _UCE.createRadialGradient.apply(_UCE, USE); //创建变化
  839. for (i = 0; i < UDE.length; i++) { _UGE.addColorStop(UDE[i][0], UDE[i][1]); } //添加渐变属性
  840. },
  841. tform: function (UOM, UTM, USM, UFM, UX, UY) { //矩阵变换 scaleX,skewX,skewY,scaleY,transX,transY
  842. this.UCE.transform(UOM, UTM, USM, UFM, UX, UY);
  843. },
  844. stform: function (UOM, UTM, USM, UFM, UX, UY) { //重置矩阵
  845. this.UCE.setTransform(UOM, UTM, USM, UFM, UX, UY);
  846. },
  847. tslate: function (UX, UY) {//平移
  848. this.UCE.translate(UX, UY);
  849. },
  850. scale: function (UX, UY) {//缩放
  851. this.UCE.scale(UX, UY);
  852. },
  853. rotate: function (UX) {//旋转
  854. this.UCE.rotate(UX);
  855. },
  856. gcpo: function (UTP) { //图像组合
  857. var i, _UCE = this.UCE, _USP = "", _UME = { s: "source", d: "destination", ou: "out", ov: "over", a: "atop", i: "in", "l": "lighter", "x": "xor", "cp": "copy" }; UTP = UTP.split(",");
  858. for (i = 0; i < UTP.length; i++) { (i) && (_USP += "-"); _USP += _UME[UTP[0]]; } _UCE.globalCompositeOperation = _USP; //添加
  859. },
  860. shadow: function (UX, UY, UC, USB) { //绘制图像的阴影
  861. var i, _UCE = this.UCE, _UDE = ["X", "Y", "Color", "Blur"], _USE = arguments;
  862. for (i = 0; i < _USE; i++) { (_USE[i]) && (_UCE["shadow" + (i < 2 ? "Offset" : "") + _UDE[i]] = _USE[i]); } //设置参数
  863. },
  864. pattern: function (UIMG, UTF) {//设置图像平铺
  865. var _UCE = this.UCE, _UME = { nr: "no-repeat", rx: "repeat-x", ry: "repeat-y", r: "repeat" }; UTF = _UME[UTF] || UTF;
  866. _UCE.createPattern(UIMG, UTF);
  867. },
  868. clip: function (UDE) {
  869. var _UCE = this.UCE; (UDE) && (this.set(UDE)); _UCE.clip(); //裁剪
  870. },
  871. gimgd: function (UX, UY, UW, UH) { //获取图片像素
  872. try { UX = UX || 0; UY = UY || 0; UW = UW || 1; UH = UH || 1; return (this.da = this.UCE.getImageData(UX, UY, UW, UH)); } catch (e) { alert(e.Message); }
  873. },
  874. copy: function (UIE, UX, UY, UDX, UDY, UDW, UDH) { //添加图像像素
  875. if (UIE) {
  876. var _UCE = this.UCE, _UDE = Array.prototype.slice.call(arguments); _UDE[1] = _UDE[1] || 0; _UDE[2] = _UDE[2] || 0;
  877. _UCE.putImageData.apply(_UCE, _UDE);
  878. }
  879. },
  880. tbline: function (UST) { //基线
  881. this.UCE.textBaseline = UST;
  882. },
  883. font: function (UST) { this.UCE.font = UST; },
  884. fillT: function (UTH, UX, UY, UDE) {//填充字体 font textBaseline textAlign measureText
  885. var i, _UCE = this.UCE; this.set(UDE); _UCE.fillText(UTH, UX, UY)
  886. },
  887. strokeT: function (UTH, UX, UY, UDE) {//绘制文字轮廓
  888. var _UCE = this.UCE; this.set(UDE); _UCE.strokeText(UTH, UX, UY)
  889. },
  890. mtext: function (UTH, UTP) { //获取文字的大小
  891. var _USE = this.UCE.measureText(UTH); if (UTF) { return _USE[UTP]; } else { return _USE; }
  892. },
  893. toImg: function (UTP) {//canvas 转化成图片
  894. this.UDCD.toDataURL("image/" + (UTP || "jpeg"));
  895. },
  896. // sign: function (UDE) {
  897. // // var _ = function (UDE) { (UDE) && ($(this).Add(UDE)); this.bind(); return this; }; // return new _fun.init(UDE);
  898. // // _.prototype = {
  899. // // init: function (UDE) { //初始化
  900. // // (UDE) && ($(this).Add(UDE)); this.bind(); return this;
  901. // // },
  902. // // bind: function () { //事件绑定
  903. // // if ("ontouchstart" in that.UDCD) { U.selectEl(that.UDCD).bind(this.signfun = { touchstart: function(){this.down();}, touchmove: function(){this.move();}, touchend: function(){this.up();} }); U.selectEl(document.body).bind({ touchend: this.signfun.mouseup }); }
  904. // // else { U.selectEl(that.UDCD).bind(this.signfun = { mousedown: function(){this.down();}, mousemove: function(){this.move();}, mouseup: function(){this.up();} }); U.selectEl(document.body).bind({ mouseup: this.signfun.mouseup }); } return this;
  905. // // },
  906. // // down: function () { //点击初始化
  907. // // this.d = U.UF.C.GetMousep(that.UDCD); that.sLine[this.d.X, this.d.Y]; that.UDCD.setCapture();
  908. // // },
  909. // // move: function () { //移动写字
  910. // // if (this.d) { var _UAE = U.UF.C.GetMousep(that.UDCD); that.sLine(null, [[_UAE.X, _UAE.Y]]).stroke({ lineWidth: this.width || "1", lineCap: "round", strokeStyle: "black" }); }
  911. // // },
  912. // // up: function () { //结束使用
  913. // // if (this.d) { that.cp(); that.save(); this.d = null; }
  914. // // },
  915. // // unbind: function () { U.selectEl(that.UDCD).unbind(this.signfun); U.selectEl(that.UDCD).unbind({ mouseup: this.signfun.mouseup }); that.UDCD.setCapture(); }
  916. // // };
  917. // },
  918. sign: (function () { //签名使用
  919. var _fun, that, _ = function (UDE) { that = this; return new _fun.init(UDE); }
  920. _fun = _.prototype = {
  921. init: function (UDE) { //初始化
  922. (UDE) && ($(this).Add(UDE)); this.bind(); return this;
  923. },
  924. bind: function () { //事件绑定
  925. if ("ontouchstart" in that.UDCD) { U.selectEl(that.UDCD).bind(this.signfun = { touchstart: function(){this.down();}, touchmove: function(){this.move();}, touchend: function(){this.up();} }); U.selectEl(document.body).bind({ touchend: this.signfun.mouseup }); }
  926. else { U.selectEl(that.UDCD).bind(this.signfun = { mousedown: function(){this.down();}, mousemove: function(){this.move();}, mouseup: function(){this.up();} }); U.selectEl(document.body).bind({ mouseup: this.signfun.mouseup }); } return this;
  927. },
  928. down: function () { //点击初始化
  929. this.d = U.UF.EL.getMousePosition(that.UDCD); that.sLine[this.d.X, this.d.Y]; that.UDCD.setCapture();
  930. },
  931. move: function () { //移动写字
  932. if (this.d) { var _UAE = U.UF.EL.getMousePosition(that.UDCD); that.sLine(null, [[_UAE.X, _UAE.Y]]).stroke({ lineWidth: this.width || "1", lineCap: "round", strokeStyle: "black" }); }
  933. },
  934. up: function () { //结束使用
  935. if (this.d) { that.cp(); that.save(); this.d = null; }
  936. },
  937. unbind: function () { U.selectEl(that.UDCD).unbind(this.signfun); U.selectEl(that.UDCD).unbind({ mouseup: this.signfun.mouseup }); that.UDCD.setCapture(); }
  938. };
  939. _fun.init.prototype = _fun; return _;
  940. })(),
  941. Pattern: function (UIMG, UTF) { //convas图片变化使用
  942. (U.UF.C.apply(UIMG)) && (UIMG = U.selectEl(UIMG)[0]);
  943. this.UDCD.createPattern(UIMG, UTF == "no" ? "no-repeat" : "repepixelspixelsat" + (UTF ? "-" : "") + UTF); return this;
  944. },
  945. isP: function (UX, UY) { //判断点是否在改范围
  946. return this.isPointInPath(UX, UY)
  947. },
  948. cimgd: function (UW, UH, UTF) { var _UCE = (this.cd = this.UCE.createImageData(UW || this.UCE.width, UH)); return (UTF ? UTF[UTF] : _UCE) }, //获取像素点的值
  949. width: function (UDE) { //获取长度
  950. var _UAE = (UDE || this.cd); return _UAE ? _UAE.width : null;
  951. },
  952. height: function () { //获取宽度
  953. var _UAE = (UDE || this.cd); return _UAE ? _UAE.height : null;
  954. },
  955. data: function (UDE) { //获取date
  956. var _UAE = (UDE || this.cd); return _UAE ? _UAE.data : null;
  957. },
  958. alpha: function () { //设置透明度
  959. this.UCE.globalAlpha = "0.2";
  960. },
  961. compo: function (UTP) {//图像的层次问题
  962. this.UCE.globalCompositeOperation = { so: "source-over", sa: "source-atop", si: "source-in", sot: "source-out", "do": "destination-over", da: "destination-atop", di: "destination-in", dot: "destination-out", lt: "lighter", cp: "copy", so: "source-over"}[UTP] || UTP || "source-over";
  963. },
  964. save: function () { //保存当前设置
  965. this.UCE.save(); //保存当前设置
  966. },
  967. restore: function () {//撤退前面一个保存的值
  968. this.UCE.restore();
  969. },
  970. grayscale: function (UBE) {//灰度效果
  971. var i, _UDE = this.cd || this.cimgd(), _UCE = _UDE.data;
  972. for (i = 0; i < _UCE.length; i += 4) { _UCE[i] = _UCE[i + 1] = _UCE[i + 2] = (_UCE[i] + _UCE[i + 1] + _UCE[i + 2]) / (UBE / 10); }
  973. return _UDE;
  974. },
  975. sepia: function () {//复古效果
  976. var i, _UR, _UG, _UB, _UDE = this.cd || this.cimgd(), _UCE = _UDE.data;
  977. for (i = 0; i < _UCE.length; i += 4) {
  978. _UR = d[i]; _UG = d[i + 1]; _UB = d[i + 2];
  979. _UCE[i] = (_UR * 0.393) + (_UG * 0.769) + (_UB * 0.189);
  980. _UCE[i + 1] = (_UR * 0.349) + (_UG * 0.686) + (_UB * 0.168);
  981. _UCE[i + 2] = (_UR * 0.272) + (_UG * 0.534) + (_UB * 0.131);
  982. }
  983. return _UDE;
  984. },
  985. red: function () {//红色蒙版效果
  986. var i, _UR, _UG, _UB, _UDE = this.cd || this.cimgd(), _UCE = _UDE.data;
  987. for (i = 0; i < _UCE.length; i += 4) {
  988. _UR = _UCE[i]; _UG = _UCE[i + 1]; _UB = _UCE[i + 2];
  989. _UCE[i] = (_UR + _UG + _UB) / 3; //设置红色灰度
  990. _UCE[i + 1] = _UCE[i + 2] = 0; //取消绿蓝
  991. }
  992. return _UDE;
  993. },
  994. brightness: function (UBE) {//亮度效果
  995. var i, _UDE = this.cd || this.cimgd(), _UCE = _UDE.data;
  996. for (i = 0; i < _UCE.length; i += 4) { _UCE[i] += UBE; _UCE[i + 1] += UBE; _UCE[i + 2] += UBE; }
  997. return _UDE;
  998. },
  999. invert: function () {//反转效果
  1000. var i, _UDE = this.cd || this.cimgd(), _UCE = _UDE.data;
  1001. for (i = 0; i < _UCE.length; i += 4) { _UCE[i] = 255 - _UCE[i]; _UCE[i + 1] = 255 - _UCE[i + 1]; _UCE[i + 2] = 255 - _UCE[i + 2]; }
  1002. return _UDE;
  1003. },
  1004. anim: function () { //动画
  1005. },
  1006. ps: function () { //初始化ps工具
  1007. var _ = function () { };
  1008. _.prototype = {
  1009. init: function () {
  1010. }
  1011. }
  1012. return _;
  1013. }
  1014. });
  1015. //#endregion
  1016. //#region svg和vml 绘图
  1017. //vml绘图工具
  1018. U.CV.vml = function () {
  1019. var _UME, _ = function (UDE, UTF) { return new _UME.init(UTF); }
  1020. _UME = _.prototype = {
  1021. init: function (UTF) { //初始化绘图工具
  1022. U.UF.C.AddObj(this, { ob: null, ca: null, tf: UTF });
  1023. },
  1024. creare: function (UDE, UPE) {
  1025. U.UF.DL.LoadStyle("v\:* { behavior: url(#default#VML); }"); //创建vml引用
  1026. this.ob = UPE; return this;
  1027. },
  1028. exec: function (UTP, UDE, UPE) { //执行统一创建
  1029. var i, _USE = [], _UTF = UDE.length, _UDSD = $$("frag"); UPE = UPE || this.ob; UDE = _UTF ? UDE : [UDE];
  1030. for (i = 0; i < UDE.length; i++) { _USE.push($$(UTP, UDE[i], _UDSD)); } UPE.appendChild(_UDSD); this.ca = _USE; return this;
  1031. },
  1032. line: function (UDE, UPE) { //添加先
  1033. if (this.tf) { UDE = { from: UDE["x1"] + "," + UDE["y1"], to: UDE["x2"] + "," + UDE["y2"], strokeColor: UDE.stroke, "stroke-width": 1 }; } //兼容svg方案
  1034. this.exec("v:line", UDE, UPE);
  1035. },
  1036. polyline: function (UDE, UPE) {
  1037. },
  1038. rect: function (UDE, UPE) {
  1039. },
  1040. circle: function (UDE, UPE) {
  1041. },
  1042. ellipse: function (UDE, UPE) {
  1043. },
  1044. polygon: function (UDE, UPE) {
  1045. },
  1046. path: function (UDE, UPE) {
  1047. }
  1048. }
  1049. }
  1050. //svg矢量图绘制
  1051. U.CV.sv = (function () {
  1052. var _UME, _ = function (UDE) {
  1053. if (U.UF.C.isSupportSvg()) { return new _UME.init(UDE); }
  1054. else { return that.vml(UDE, true); }
  1055. }
  1056. _UME = _.prototype = {
  1057. //绘制图形的方法
  1058. init: function () { //初始化绘图工具
  1059. U.UF.C.AddObj(this, { ob: null, ca: null });
  1060. },
  1061. creare: function (UDE, UPE) { //创建svg
  1062. UDE = UDE || {}; U.UF.C.AddObj(UDE, { "xmlns": "http://www.w3.org/2000/svg", "version": "1.1", "xmlns:xlink": "http://www.w3.org/1999/xlink" });
  1063. this.ob = $$.NS("svg", UDE, UPE || document.body);
  1064. return this;
  1065. },
  1066. exec: function (UTP, UDE, UPE) { //统一执行创建
  1067. var i, _USE = [], _UTF = UDE.length, _UDSD = $$("frag"); UPE = UPE || this.ob; UDE = _UTF ? UDE : [UDE];
  1068. for (i = 0; i < UDE.length; i++) { _USE.push($$.NS(UTP, UDE[i], _UDSD)); }; UPE.appendChild(_UDSD); this.ca = _USE; return this;
  1069. },
  1070. line: function (UDE, UPE) { //线 x1 y1 x2 y2
  1071. this.exec("line", UDE, UPE); return this;
  1072. },
  1073. polyline: function (UDE, UPE) { //多线条 points "0,10"
  1074. this.exec("polyline", UDE, UPE); return this;
  1075. },
  1076. rect: function (UDE, UPE) { //矩形 width height
  1077. this.exec("rect", UDE, UPE); return this;
  1078. },
  1079. circle: function (UDE, UPE) { //圆形 cx cy r
  1080. this.exec("circle", UDE, UPE); return this;
  1081. },
  1082. ellipse: function (UDE, UPE) { //椭圆 cx cy rx ry
  1083. this.exec("ellipse", UDE, UPE); return this;
  1084. },
  1085. polygon: function (UDE, UPE) { //多边形 points "10,10"
  1086. this.exec("polygon", UDE, UPE); return this;
  1087. },
  1088. path: function (UDE, UPE) { //命令创建 d = M 移动到 L 连线到 H水平连线到 V垂直连线到 C曲线连接到 S平滑曲线连接到 Q使用二次贝塞尔连接 T平滑二次贝塞尔 A使用椭圆曲线连接 Z将路径封闭到
  1089. this.exec("path", UDE, UPE); return this;
  1090. },
  1091. text: function (UDE, UCE, UPE) { //text文本
  1092. var i, _UDOD = $$.NS("text", UDE);
  1093. for (i in UCE) { if (UCE.hasOwnProperty(i)) { $$.NS(i, UCE[i], _UDOD); } }
  1094. _UDOD.innerHTML += ""; (UPE || this.ob).appendChild(_UDOD); this.ca = _UDOD; return this;
  1095. },
  1096. //特效
  1097. execT: function (UCE, UPE, UTF) { //特效统一定义
  1098. var i, j, _UNE, _UOE, _UDTD, _UDOD = UTF || $$.NS("defs");
  1099. for (i in UCE) { //添加
  1100. if (UCE.hasOwnProperty(i)) { //添加向下的用户
  1101. _UNE = UCE[i].Child; delete UCE[i].Child; _UDTD = $$.NS(i, UCE[i], _UDOD);
  1102. if (_UNE) { for (j = 0; j < _UNE.length; i++) { _UOE = {}; _UOE[_UNE[i][0]] = _UOE[_UNE[i][1]]; this.execT(_UOE, null, _UDTD); } }
  1103. }
  1104. }
  1105. (!UTF) && ((UPE || this.ob).appendChild(_UDOD)); //添加特效
  1106. },
  1107. filter: function (UDE, UCE) { //创建投影 默认窗体投影
  1108. UDE = UDE || { id: "f" + Guid.guidNoDash(), x: "0", y: "0", width: "200%", height: "200%" };
  1109. UDE.Child = UCE || [["feOffset", { "result": "offOut", "in": "SourceAlpha", dx: "20", dy: "20"}], ["feGaussianBlur", { result: "blurOut", "in": "offOut", "stdDeviation": "10"}], ["feBlend", { "in": "SourceGraphic", "in2": "blurOut", "mode": "normal"}]];
  1110. this.execT({ filter: UDE }); return this;
  1111. },
  1112. linearG: function (UDE, UCE) { //线性渐变 默认色彩模型
  1113. UDE = UDE || { id: "grad" + Guid.guidNoDash(), x1: "0%", y1: "0%", x2: "100%", height: "0%" };
  1114. UDE.Child = UCE || [["stop", { "offset": "0%", "style": "stop-color:#000"}], ["stop", { offset: "100%", style: { "cssText": "stop-color:#FFF"}}]]; ;
  1115. this.execT({ linearGradient: UDE });
  1116. },
  1117. radialG: function (UDE, UCE) { //径向渐变
  1118. UDE = UDE || { id: "grad" + Guid.guidNoDash(), cx: "50%", cy: "50%", r: "50%", fx: "50%", fy: "50%" };
  1119. UDE.Child = UCE || [["stop", { "offset": "0%", "style": { "cssText": "stop-color:#000;"}}], ["stop", { "offset": "100%", "cssText": "stop-color:#FFF"}]];
  1120. this.execT({ radialGradient: UDE });
  1121. },
  1122. animate: function (UTP) { //动画效果设置
  1123. (UTP != "set") && (UTP = "animate" + UTP.replace("animate", ""));
  1124. },
  1125. "$": function () { //svg查找元素
  1126. }
  1127. }
  1128. _UME.init.prototype = _UME; return _;
  1129. })()
  1130. //#endregion
  1131. //#region 文件操作区域
  1132. //设置文件读取
  1133. U.CV.FRead = function (UFE, UDE, UTF) {
  1134. return new U.CV.Finit(UFE, UDE, UTF).start();
  1135. }
  1136. //获取文件设置
  1137. U.CV.Finit = function (UFE, UDE, UTF) {
  1138. this.ULE; this.UDE = UDE; this.UFE = UFE.files; this.UTF = UTF; this.UIF = UDE.upload; this.US = UDE.ST || 0; this.UL = UDE.L || 0; this.UIT = 0; this.URE = new FileReader();
  1139. }
  1140. //文件读取事件
  1141. U.CV.Event = ["onabort", "onerror", "onload", "onloadstart", "onloadend", "onprogress"];
  1142. //开始读取文件
  1143. U.CV.start = function () {
  1144. var _UFT, _UTF = this.UTF, _UFLE = this.UFE[this.UIT]; //生成读取文件
  1145. if ((_UTF == "img" || _UTF == "Limg") && (_UFT = (/image\/\w+/.test(_UFLE.type)))) { this.imgR(_UFLE); } //图片读取 生成
  1146. else if (_UTF != "img") { this.read(_UFLE, this.US, this.US + this.UL); } //文件读取
  1147. return this;
  1148. }
  1149. //中断当前操作
  1150. U.CV.abort = function () {
  1151. this.URE.abort(); //关闭当前读取文件操作
  1152. return this;
  1153. }
  1154. //图片读取加载
  1155. U.CV.imgR = function (UFE) {
  1156. var i, _UDE = this.Event, _URE = this.URE;
  1157. for (i = 0; i < _UDE.length; i++) { _URE[_UDE[i]] = function(){this[_UDE[i]]()}; } //事件赋值
  1158. _URE.readAsDataURL(UFE); return this; //图片读取
  1159. }
  1160. //读取文件
  1161. U.CV.read = function (UFE, US, UE) {
  1162. var i, _UFLE, _UFL = UFE.size, _URE = this.URE; US = US || 0; UE = UE || _UFL; UE = UE > _UFL ? _UFL : UE;
  1163. for (i = 0; i < _UDE.length; i++) { _URE[_UDE[i]] = function(){this[_UDE[i]]()}; } //事件赋值
  1164. if (!US && UE == UFE.size) { _UFLE = UFE; } //无分割形式
  1165. else { _UFLE = (UFE.webkitSlice || UFE.mozSlice || UFE.slice)(US, UE); } //分割文件
  1166. _URE.readAsBinaryString(_UFLE); return this; //读取文件流
  1167. }
  1168. //操作终结
  1169. U.CV.onabort = function (UE) {
  1170. (this.UDE.abort) && (this.UDE.abort(UE)); //文件读取终结
  1171. return this;
  1172. }
  1173. //读取文件失败
  1174. U.CV.onerror = function (UE) {
  1175. (this.UDE.error) && (this.UDE.error(UE)); //读取文件失败回调
  1176. return this;
  1177. }
  1178. //读取本地文件成功
  1179. U.CV.onload = function (UE) {
  1180. if (this.URE.readyState == FileReader.DONE) { //读取文件成功
  1181. (this.UDE.load) && (this.UDE.load(this.URE)); //读取文件成功回调
  1182. (this.UIF) && (this.upload(UE.srcElement.result)); //上传
  1183. }
  1184. return this;
  1185. }
  1186. //读取文件开始调用
  1187. U.CV.onloadstart = function (UE) {
  1188. (this.UDE.loadstart) && (this.UDE.loadstart(UE));
  1189. return this;
  1190. }
  1191. //读取文件后
  1192. U.CV.onloadend = function (UE) {
  1193. if (!this.UIF) {
  1194. if (this.UIT == this.UFE.length - 1) { this.abort(); this.URE = null; delete this; } //释放资源
  1195. else {//继续解析
  1196. var _UIE = this.UIT, _UE = this.US + this.UL;
  1197. if (!_UE && this.UFE[_UIE].size > _UE) { this.US = _UE; } //同一文件继续解析
  1198. else { this.US = 0; this.UIT++; } //解析下一个文件
  1199. this.start();
  1200. }
  1201. }
  1202. return this;
  1203. }
  1204. //读取的进度
  1205. U.CV.onprogress = function (UE) {
  1206. (this.UDE.progress) && (this.UDE.progress(UE));
  1207. return this;
  1208. }
  1209. //文件断点续传
  1210. U.CV.upload = function (UDE) {
  1211. var i, _UOE = this.UDE.upload, _UAE = {};
  1212. for (i in _UOE["on"]) { if (_UOE.hasOwnProperty(i)) { _UAE[i] = function(){this.Asynupload();}; } }
  1213. this.ULE = this.ULE || U.CV.UL(_UOE["url"], _UAE, _UOE["emit"], _UOE["options"] || { "connect timeout": "30000" }).emit(UDE);
  1214. return this;
  1215. }
  1216. //接收服务器返回消息
  1217. U.CV.Asynupload = function (UDE) {
  1218. var i, _UOE = this.UDE.upload.on;
  1219. for (i in _UOE) { if (_UOE.hasOwnProperty(i)) { _UOE[i](UDE); } } //发送返回的消息
  1220. this.onloadend(); //继续解析上传
  1221. }
  1222. //#endregion
  1223. /*-------------------------------------暂未使用函数--------------------------------------*/
  1224. //专用线程创建 不共享数据
  1225. U.DW.dwork = (function () {
  1226. var _e, _ = function (UDE, UTP) { if (window.Worker) { return new _e.init(UDE, UTP); } else { return false; } }
  1227. _.prototype = _e = {
  1228. init: function (UDE, UTP) {//创建线程监视
  1229. var i, _USE = {}, _UCE = ["message", "erorr"]; this.UTP = UTP; this.UE = UDE; this.UW = new (UTP ? SharedWorker : Worker)(UDE.url || new Blob([UDE.fun.toString(), "this.onmessage = function (e) {" + (UDE.fun.name || UDE.fun) + "(e.data);}"], { type: "application/javascript" }), UTP); this.SetW = UDE.cb; this.USE = UDE.USE;
  1230. this.UME = UTP ? this.UW.port : this.UW; for (i = 0; i < _UCE.length; i++) { _USE[_UCE[i]] = function(){this[_UCE[i]]()}; } this.event(_USE); //线程设置
  1231. },
  1232. event: function (UDE) { //事件绑定
  1233. for (var i in UDE) { if (UDE.hasOwnProperty(i)) { this.on(i, UDE[i]); } } //绑定事件
  1234. },
  1235. message: function (UE) { //获取消息后使用消息
  1236. var _UDE = this.UE.event; this.set(UE); (_UDE && _UDE.message && UE) && (_UDE.message(UE));
  1237. },
  1238. erorr: function (UE) { //线程异常
  1239. var _UDE = this.UE.event, _UGE = UE.getData().data; this.log(_UGE);
  1240. (_UDE && _UDE.erorr) && (_UDE.erorr(_UGE)); //设置
  1241. },
  1242. post: function (UDE) { //发送消息
  1243. this.UME.postMessage(UDE);
  1244. },
  1245. stop: function () { //停止线程
  1246. this.UW.terminate();
  1247. },
  1248. set: function (UE) { //设置共享数据变化
  1249. this.USE = this.SetW ? this.SetW(UE.data) : UE.data; //设置值
  1250. },
  1251. log: function (UE) { //添加输出调试
  1252. U.UF.C.console(UE);
  1253. },
  1254. on: function (UTP, cb) { //事件绑定
  1255. U.UF.EV.addElementEvent(UTP, this.UME, cb, false);
  1256. },
  1257. off: function (UTP, cb) { //事件取消
  1258. U.UF.EV.delElementEvent(UTP, this.UME, cb, false);
  1259. },
  1260. onm: function (UDE) { //线程内存处理
  1261. },
  1262. "import": function () {
  1263. }
  1264. }
  1265. _e.init.prototype = _.prototype; return _;
  1266. })()
  1267. //html5离线存储,和前面的本地存储U.DW.local有什么区别?
  1268. U.DW.appCache = (function () {
  1269. var _e, _UAP = window.applicationCache, _ = function (UDE) { new _e.init(UDE); },
  1270. AsynLoad = function (UDE) {//异步加载完毕
  1271. if (!(UDE.length--)) { this.UDE.load(); } //缓存更新
  1272. };
  1273. _e = _.prototype = {
  1274. init: function (UDE) { //初始化
  1275. this.UDE = UDE; this.on(UDE);
  1276. },
  1277. on: function (UDE) { //这里是事件绑定
  1278. var i, _UCE = ["checking", "noupdate", "download", "progress", "error", "updateready", "cached", "obsolete"];
  1279. for (i = 0; i < _UCE.length; i++) { U.UF.EV.addElementEvent(_UCE[i], _UAP, this[_UCE[i]]) } return this; //事件绑定
  1280. },
  1281. noupdate: function (UE) { //无缓存更新
  1282. var _UDE = this.UDE; (_UDE.noupdate) && (_UDE.noupdate(UE));
  1283. },
  1284. checking: function (UE) {//更新页面触发
  1285. var _UDE = this.UDE; (_UDE.checking) && (_UDE.checking(UE));
  1286. },
  1287. download: function (UE) { //开始下载触发
  1288. var _UDE = this.UDE; (_UDE.download) && (_UDE.download(UE));
  1289. },
  1290. progress: function (UE) { //下载进度
  1291. var _UDE = this.UDE; (_UDE.progress) && (_UDE.progress(UE));
  1292. },
  1293. error: function (UE) { //更新发生错误
  1294. var _UDE = this.UDE; (_UDE.download) && (_UDE.download(UE));
  1295. },
  1296. updateready: function (UE) { //成功更新
  1297. if (UE.status == _UAPe.UPDATEREADY) {
  1298. var _USE, _UDE = this.UDE; (_UDE.updateready) && (_USE = _UDE.updateready(UE));
  1299. try { _UAP.swapCache(); (_USE) && (this.load(_USE)); return true; } catch (e) { return false; }
  1300. }
  1301. },
  1302. load: function (UDE) { //加载文件替换缓存
  1303. if (UDE === true) { location.reload(); } //直接刷新页面
  1304. else { var i, _UCB = function(){AsynLoad(UDE);}; for (i = 0; i < UDE.length; i++) { U.UF.DL.asynLoadJs(null, null, _UCB, UDE[i], true); } } //异步加载
  1305. },
  1306. cached: function () { //缓存已经下载完成 指定的缓存文件给缓存
  1307. var _UDE = this.UDE; (_UDE.cached) && (_UDE.cached(UE));
  1308. },
  1309. obsolete: function (UE) { //manifest的请求 404 缓存删除
  1310. var _UDE = this.UDE; (_UDE.obsolete) && (_UDE.obsolete(UE));
  1311. },
  1312. update: function () { //更新缓存
  1313. _UAP.update(); return this;
  1314. },
  1315. abort: function () { //获取下载取消
  1316. _UAP.abort(); return this;
  1317. },
  1318. swapCache: function () { //更新缓存替换
  1319. _UAP.swapCache(); return this;
  1320. },
  1321. status: function () { //缓存
  1322. return _UAP.status;
  1323. }
  1324. }
  1325. _e.init.prototype = _.prototype;
  1326. })()
  1327. //#region
  1328. /*-----------------------------------------------------------------------------暂未使用函数--------------------------------------------------*/
  1329. //拉拽上传控件,暂未使用..
  1330. U.UF.UP.dragUp = function () {
  1331. var _UME, _ = function (UDE) {
  1332. if ($$("div").draggable !== undefined) { return (new _UME.init(UDE)).create(); }
  1333. else { throw Error("You browser is no drag !"); }
  1334. };
  1335. _.prototype = _UME = {
  1336. chche: null,
  1337. init: function (UDE) {//初始化
  1338. U.UF.C.AddObj(this, UDE);
  1339. },
  1340. type: function (UTP) { //格式限制
  1341. this.type = UTP ? U.UF.C.SFT(UTP) : UTP;
  1342. },
  1343. on: function (UDE, UDV) {//事件绑定
  1344. var i, _UAE = UDE; (U.UF.C.isString(UDE) && (_UAE = {}, _UAE[UDE] = UDV, _UAE = UDE));
  1345. U.UF.C.AddObj(this, _UAE);
  1346. },
  1347. off: function (UDE, UDV) { //事件取消
  1348. var i, _UT = this, _UAE = UDE; (U.UF.C.isString(UDE) && (_UAE = {}, _UAE[UDE] = UDV, _UAE = UDE));
  1349. _$.Each(_UAE,function (UA, UB) { _UT[UB] = null; delete _UT[UB]; });
  1350. },
  1351. create: function () { //创建拖拽上传
  1352. if (this.obj) {
  1353. var i, _UDE = { dragstart: "start", dragend: "end", dragleave: "leave", dragenter: "enter", dragover: "over", drop: "drop"} //需要绑定的事件
  1354. for (i in _UDE) { if (_UDE.hasOwnProperty(i)) { _UDE[i] = function(){this[_UDE[i]]()}; } } U.selectEl(this.obj).bind((this.Events = _UDE)); //事件绑定
  1355. }
  1356. return this;
  1357. },
  1358. exec: function (UTP, UCE) { //统一执行区域
  1359. (U.UF.C.isFunction(this[UTP])) && (this[UTP]());
  1360. },
  1361. start: function () { return false; },
  1362. enter: function (UE) { //进入其容器范围内时触发
  1363. (this.en) && (this.en(UE));
  1364. U.UF.EV.stopDefault(); return false;
  1365. },
  1366. over: function (UE) { //文件另一对象触发
  1367. (this.ov) && (this.ov(UE));
  1368. U.UF.EV.stopDefault(); return false;
  1369. },
  1370. drop: function (UE) { //文件放置触发 over必须阻止默认事件
  1371. var i, _UTP = this.type, _UFE = UE.dataTransfer.files; this.chche = _UFE;
  1372. U.UF.EV.stopDefault(); (this.dr) && (this.dr(_UFE)); return false; //回调函数
  1373. },
  1374. leave: function (UE) { //文件移动进入
  1375. (this.le) && (this.le(UE));
  1376. U.UF.EV.stopDefault(); return false;
  1377. },
  1378. end: function () {
  1379. U.UF.EV.stopDefault(); return false;
  1380. },
  1381. read: (function () { //读取文件
  1382. var _ = function (UFL, cb) {
  1383. if (cb && UFL[0]) {
  1384. U.UF.C.AddObj(this, { chace: UFL, i: 0, fun: cb || {}, pos: 204800, s: 0, e: 0 }); this.init(UFL[0]);
  1385. }
  1386. }
  1387. _.prototype = {
  1388. init: function (UFL) {
  1389. var i, _UBE, _US = this.s, _UE = Math.min(_US + this.pos, UFL.size), _UDE = { "onloadstart": "start", "onprogress": "progres", "onload": "load", "onloadend": "end" }, _URE = new FileReader(); UFL = UFL || this.file;
  1390. this.file = UFL; this.e = _UE; for (i in _UDE) { if (_UDE.hasOwnProperty(i)) { _URE[i] = function(){this[_UDE[i]]()}; } } UFL.slice = UFL.slice || UFL.webkitSlice || UFL.mozSlice; _URE.readAsBinaryString(UFL.slice(_US, _UE));
  1391. },
  1392. start: function () { //获取流值初始化
  1393. var _UCB = this.fun.start; (U.UF.C.isFunction(_UCB)) && (_UCB());
  1394. },
  1395. progres: function () { //获取的进度
  1396. var _UCB = this.fun.progres; (U.UF.C.isFunction(_UCB)) && (_UCB());
  1397. },
  1398. load: function () { //获取完毕
  1399. var _UCB = this.fun.load; (U.UF.C.isFunction(_UCB)) && (_UCB());
  1400. },
  1401. end: function (UE) { //结束释放
  1402. var _UCB, _URE, _UTF = true, _UPE = this.e; if (_UPE < this.file.size) { this.s = this.e; } else { _UTF = false; this.file = this.chace[(this.i += 1)]; } //获取md5结束
  1403. _UCB = this.fun.end || this.fun; (U.UF.C.isFunction(_UCB)) && (_URE = _UCB(UE.target.result, !_UTF), _UTF = _UTF || _URE); (_UTF && this.file) && (this.init(this.file)); //异步回调
  1404. },
  1405. add: function () { //添加流记载
  1406. }
  1407. }
  1408. return function (UFL, cb) {
  1409. new _(UFL, cb);
  1410. };
  1411. })(),
  1412. up: function (URL) { //上传文件
  1413. $.Upload({ url: URL, file: this.chche, pro: this.pro });
  1414. },
  1415. pro: function (UE) { //上传监视
  1416. (this.pr) && (this.pr(UE));
  1417. },
  1418. su: function (UE) { //当前图片上传完毕
  1419. (this.s) && (this.s(UE));
  1420. },
  1421. all: function () {//所有文件上传完毕
  1422. (this.cmp) && (this.cmp(UE));
  1423. },
  1424. hash: function (US, UE, cb) {
  1425. var _UDE = U.UF.EC.crypto.algo.MD5.create();
  1426. this.read(this.chche, function (UAE, UTF) {
  1427. //上传时执行加密功能
  1428. _UDE.update(U.UF.EC.crypto.enc.Latin1.parse(UAE));
  1429. (UTF && cb) && (cb(_UDE.finalize()));
  1430. return true;
  1431. });
  1432. // U.DW.dwork({ "url": "JScript8.js" })
  1433. },
  1434. de: function () { //删除文件
  1435. }
  1436. }
  1437. _UME.init.prototype = _UME;
  1438. return _;
  1439. }
  1440. //初始化上传自动识别上传工具
  1441. U.UF.UP.inputUpload = function () {
  1442. var _ = function () { }
  1443. _.prototype = {
  1444. init: function () {
  1445. },
  1446. isa: function () { //判断使用哪个模式
  1447. },
  1448. aas: function () { //解析
  1449. },
  1450. md5: function () { //获取文件的MD5
  1451. }
  1452. }
  1453. return _;
  1454. }
  1455. //#endregion
  1456. //#region 播放器区域,包含了视频播放器和音频播放器,但现在都没有使用!
  1457. //Html5 音频播放器
  1458. U.PL.au = function () {
  1459. var _UME, _ = function (UDE, UDPD, UCE) {
  1460. if ($$("video").canPlayType) { return new _UME.init(UDE, UDPD); }
  1461. else { return; }
  1462. }
  1463. _UME = _.prototype = {
  1464. attr: { pl: "preload", ap: "autoplay", lp: "loop", ct: "controls" },
  1465. config: function (UCE) { //配置音乐
  1466. (UCE) && (U.Json((this.cf = this.cf || {})).Add(UCE)); U.Json.Add(this.cf,{ l: this.cf.l || 0, urls: this.cf.urls || [] });
  1467. },
  1468. init: function (UDE, UDPD, UCE) { //初始化音频播放器
  1469. U.UF.C.AddObj(this, { obj: UDE, pa: UDPD, au: null });
  1470. },
  1471. create: function (URL, UDPD) { //创建音乐播放器
  1472. var _UCE = this.cf.html || {}; if ((URL = URL || this.cf.urls[this.cf.l])) { _UCE["src"] = URL; this.au = U.selectEl(this.au || $$("audio", null, UDPD || this.pa || document.body)).addAttrArray(_UCE); if (this.isPlay(U.UF.UP.getFileNameAndExtension(URL)[1])) { this.event(_UDE.e); } else { U.Alert(); }; } return this;
  1473. },
  1474. event: function () { //事件赋值
  1475. var i, _UDOD = this.vi; //监听所有的事件
  1476. if (U.PL._ev) { for (i = 0; i < U.PL._ev.length; i++) { U.UF.EV.addElementEvent(U.PL._ev[i], _UDOD, function(){this.cb(U.PL._ev[i]);}); } }
  1477. },
  1478. load: function (URL) { //播放音乐
  1479. URL = URL || this.cf.urls[this.cf.l]; if (this.vi) { this.vi.url = URL; } else { this.create(URL); }
  1480. },
  1481. play: function (UTF) { //播放还是停止
  1482. this.vi[UTF ? "play" : "pause"]();
  1483. },
  1484. sound: function () { //声音变化
  1485. },
  1486. lpb: function () { //修改播放的位置
  1487. },
  1488. muted: function () { //静音设置
  1489. },
  1490. isPlay: function (UTF, UDOD) { //判断是否允许播放该格式
  1491. return (UDOD || this.vi).canPlayType(this.type[UTF.toLowerCase()]);
  1492. },
  1493. pb: function () { //进度条变化
  1494. },
  1495. Buffer: function () { //缓冲变化
  1496. }
  1497. }
  1498. _UME.init.prototype = _UME; return _;
  1499. }
  1500. //#endregion
  1501. ////----------------------------------------------------------------------------未用函数----------------------------------------------------------------------
  1502. //切换效果
  1503. U.UF.MR.OptionGroupSelect = function (UDOD) {
  1504. var i, _UIE, _UDPD = U.selectEl(UDOD).Parent(), _UDSD = U.selectEl("span", _UDPD), _UDID = U.selectEl("i", _UDPD)[0], _UE = U.UF.EL.getElementInfo(UDOD);
  1505. for (i = 0; i < _UDSD.length; i++) { U.selectEl(_UDSD[i]).addAttrArray({ "style": _UDSD[i] == UDOD ? ($(_UDPD).addAttrArray({ "selectnum": i }), U.selectEl(_UDID).animate({ "left": i * _UE["BCRW"] + "px" }, 100), { "fontWeight": "bold", "color": "White" }) : { "fontWeight": "normal", "color": "#000"} }); }
  1506. }
  1507. /**
  1508. * 事件绑定
  1509. *
  1510. * @param {object} U.DW.local实例对象
  1511. * @param {object} U.DW.local实例对象
  1512. */
  1513. // set: function (UDE, USE) { //设置值
  1514. // if (this.UJE) {
  1515. // var i, _UME = this.UJE;
  1516. // (USE != null) && (i = UDE, UDE = {}, UDE[i] = USE);
  1517. // for (i in UDE) {
  1518. // (UDE.hasOwnProperty(i)) && (this.UTF ? _UME.setItem(i, UDE[i]) : (_UME.setAttribute(i, UDE[i]), _UME.save("us")));
  1519. // }
  1520. // }
  1521. // return this;
  1522. // },
  1523. //动画效果函数
  1524. Math.tween = {
  1525. Linear: function (t, b, c, d) { return c * t / d + b; },
  1526. Quad: {
  1527. easeIn: function (t, b, c, d) {
  1528. return c * (t /= d) * t + b;
  1529. },
  1530. easeOut: function (t, b, c, d) {
  1531. return -c * (t /= d) * (t - 2) + b;
  1532. },
  1533. easeInOut: function (t, b, c, d) {
  1534. if ((t /= d / 2) < 1) return c / 2 * t * t + b;
  1535. return -c / 2 * ((--t) * (t - 2) - 1) + b;
  1536. }
  1537. },
  1538. Cubic: {
  1539. easeIn: function (t, b, c, d) {
  1540. return c * (t /= d) * t * t + b;
  1541. },
  1542. easeOut: function (t, b, c, d) {
  1543. return c * ((t = t / d - 1) * t * t + 1) + b;
  1544. },
  1545. easeInOut: function (t, b, c, d) {
  1546. if ((t /= d / 2) < 1) return c / 2 * t * t * t + b;
  1547. return c / 2 * ((t -= 2) * t * t + 2) + b;
  1548. }
  1549. },
  1550. Quart: {
  1551. easeIn: function (t, b, c, d) {
  1552. return c * (t /= d) * t * t * t + b;
  1553. },
  1554. easeOut: function (t, b, c, d) {
  1555. return -c * ((t = t / d - 1) * t * t * t - 1) + b;
  1556. },
  1557. easeInOut: function (t, b, c, d) {
  1558. if ((t /= d / 2) < 1) return c / 2 * t * t * t * t + b;
  1559. return -c / 2 * ((t -= 2) * t * t * t - 2) + b;
  1560. }
  1561. },
  1562. Quint: {
  1563. easeIn: function (t, b, c, d) {
  1564. return c * (t /= d) * t * t * t * t + b;
  1565. },
  1566. easeOut: function (t, b, c, d) {
  1567. return c * ((t = t / d - 1) * t * t * t * t + 1) + b;
  1568. },
  1569. easeInOut: function (t, b, c, d) {
  1570. if ((t /= d / 2) < 1) return c / 2 * t * t * t * t * t + b;
  1571. return c / 2 * ((t -= 2) * t * t * t * t + 2) + b;
  1572. }
  1573. },
  1574. Sine: {
  1575. easeIn: function (t, b, c, d) {
  1576. return -c * Math.cos(t / d * (Math.PI / 2)) + c + b;
  1577. },
  1578. easeOut: function (t, b, c, d) {
  1579. return c * Math.sin(t / d * (Math.PI / 2)) + b;
  1580. },
  1581. easeInOut: function (t, b, c, d) {
  1582. return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b;
  1583. }
  1584. },
  1585. Expo: {
  1586. easeIn: function (t, b, c, d) {
  1587. return (t == 0) ? b : c * Math.pow(2, 10 * (t / d - 1)) + b;
  1588. },
  1589. easeOut: function (t, b, c, d) {
  1590. return (t == d) ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;
  1591. },
  1592. easeInOut: function (t, b, c, d) {
  1593. if (t == 0) return b;
  1594. if (t == d) return b + c;
  1595. if ((t /= d / 2) < 1) return c / 2 * Math.pow(2, 10 * (t - 1)) + b;
  1596. return c / 2 * (-Math.pow(2, -10 * --t) + 2) + b;
  1597. }
  1598. },
  1599. Circ: {
  1600. easeIn: function (t, b, c, d) {
  1601. return -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b;
  1602. },
  1603. easeOut: function (t, b, c, d) {
  1604. return c * Math.sqrt(1 - (t = t / d - 1) * t) + b;
  1605. },
  1606. easeInOut: function (t, b, c, d) {
  1607. if ((t /= d / 2) < 1) return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b;
  1608. return c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b;
  1609. }
  1610. },
  1611. Elastic: {
  1612. easeIn: function (t, b, c, d, a, p) {
  1613. var s;
  1614. if (t == 0) return b;
  1615. if ((t /= d) == 1) return b + c;
  1616. if (typeof p == "undefined") p = d * .3;
  1617. if (!a || a < Math.abs(c)) {
  1618. s = p / 4;
  1619. a = c;
  1620. } else {
  1621. s = p / (2 * Math.PI) * Math.asin(c / a);
  1622. }
  1623. return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;
  1624. },
  1625. easeOut: function (t, b, c, d, a, p) {
  1626. var s;
  1627. if (t == 0) return b;
  1628. if ((t /= d) == 1) return b + c;
  1629. if (typeof p == "undefined") p = d * .3;
  1630. if (!a || a < Math.abs(c)) {
  1631. a = c;
  1632. s = p / 4;
  1633. } else {
  1634. s = p / (2 * Math.PI) * Math.asin(c / a);
  1635. }
  1636. return (a * Math.pow(2, -10 * t) * Math.sin((t * d - s) * (2 * Math.PI) / p) + c + b);
  1637. },
  1638. easeInOut: function (t, b, c, d, a, p) {
  1639. var s;
  1640. if (t == 0) return b;
  1641. if ((t /= d / 2) == 2) return b + c;
  1642. if (typeof p == "undefined") p = d * (.3 * 1.5);
  1643. if (!a || a < Math.abs(c)) {
  1644. a = c;
  1645. s = p / 4;
  1646. } else {
  1647. s = p / (2 * Math.PI) * Math.asin(c / a);
  1648. }
  1649. if (t < 1) return -.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;
  1650. return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p) * .5 + c + b;
  1651. }
  1652. },
  1653. Back: {
  1654. easeIn: function (t, b, c, d, s) {
  1655. if (typeof s == "undefined") s = 1.70158;
  1656. return c * (t /= d) * t * ((s + 1) * t - s) + b;
  1657. },
  1658. easeOut: function (t, b, c, d, s) {
  1659. if (typeof s == "undefined") s = 1.70158;
  1660. return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;
  1661. },
  1662. easeInOut: function (t, b, c, d, s) {
  1663. if (typeof s == "undefined") s = 1.70158;
  1664. if ((t /= d / 2) < 1) return c / 2 * (t * t * (((s *= (1.525)) + 1) * t - s)) + b;
  1665. return c / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2) + b;
  1666. }
  1667. },
  1668. Bounce: {
  1669. easeIn: function (t, b, c, d) {
  1670. return c - Tween.Bounce.easeOut(d - t, 0, c, d) + b;
  1671. },
  1672. easeOut: function (t, b, c, d) {
  1673. if ((t /= d) < (1 / 2.75)) {
  1674. return c * (7.5625 * t * t) + b;
  1675. } else if (t < (2 / 2.75)) {
  1676. return c * (7.5625 * (t -= (1.5 / 2.75)) * t + .75) + b;
  1677. } else if (t < (2.5 / 2.75)) {
  1678. return c * (7.5625 * (t -= (2.25 / 2.75)) * t + .9375) + b;
  1679. } else {
  1680. return c * (7.5625 * (t -= (2.625 / 2.75)) * t + .984375) + b;
  1681. }
  1682. },
  1683. easeInOut: function (t, b, c, d) {
  1684. if (t < d / 2) {
  1685. return Tween.Bounce.easeIn(t * 2, 0, c, d) * .5 + b;
  1686. } else {
  1687. return Tween.Bounce.easeOut(t * 2 - d, 0, c, d) * .5 + c * .5 + b;
  1688. }
  1689. }
  1690. }
  1691. };
  1692. U.UF.C.AddObj(U.P, Math.tween);
  1693. //#region 画图函数
  1694. U.UF.Math.RandomXY = function () {
  1695. }
  1696. //判断鼠标是否在div上
  1697. U.UF.Math.MouseInRect = function (UDOD) {
  1698. var _UE = U.UF.EL.getMousePosition(), _UWH = U.UF.EL.getElementInfo(UDOD);
  1699. return _UE.X > _UWH.BCRL && _UE.X < _UWH.BCRR && _UE.Y > _UWH.BCRT && _UE.Y < _UWH.BCRB;
  1700. }
  1701. //画点 位置和大小
  1702. U.UF.Math.DrawPoint = function (x, y, c, s, con) {
  1703. $$("div", { "style": { "position": "absolute", "left": x + "px", "top": y + "px", "backgroundColor": c || "#000", "width": (s || 1) + "px", "height": (s || 1) + "px"} }, con || document.body);
  1704. }
  1705. //画线
  1706. U.UF.Math.DrawLine = function (x, y, ex, ey, s, c, con) {
  1707. var i, j, _UL, _USE, _UJE, _UKE, _UX = ex - x, _UY = ey - y, _UDFD = $$("frag"); s = s || 1;
  1708. if (!_UX) { i = Math.min(y, ey); _UL = Math.max(y, ey); for (; i < _UL; i++) { U.UF.Math.DrawPoint(x, i, c, s, _UDFD); } } //画竖线
  1709. else if (!_UY) { i = Math.min(x, ex); _UL = Math.max(x, ex); for (; i < _UL; i++) { U.UF.Math.DrawPoint(x, i, c, s, _UDFD); } } //画横线
  1710. else { //画斜线
  1711. j = i = Math.min(x, ex); _UL = Math.max(x, ex); _UJE = (ey - y) / (ex - x); _USE = Math[_UJE > 0 ? "min" : "max"](y, ey); //sin(a) 斜率以横最为增长值
  1712. for (i; i <= _UL; i++) { U.UF.Math.DrawPoint(i, (i - j) * _UJE + _USE, c, s, _UDFD); } //变化递增
  1713. }
  1714. (con || document.body).appendChild(_UDFD);
  1715. }
  1716. //画矩形
  1717. U.UF.Math.DrawRect = function (x, y, w, h, c, con) {
  1718. var i, _UTY = y + h, _UDFD = $$("frag");
  1719. for (i = 0; i < w; i++) { U.UF.Math.DrawLine(x + i, y, x + i, _UTY, 1, c, _UDFD); }
  1720. (con || document.body).appendChild(_UDFD);
  1721. }
  1722. //移除元素
  1723. U.UF.Math.Clean = function () {
  1724. }
  1725. //sin曲线
  1726. U.UF.Math.Sin = function (x, y, r, c, w) {
  1727. for (var i = 0; i < r; i++) U.UF.Math.DrawPoint(x + i, y + Math.sin(i / 180 * Math.PI) * 100, c, w);
  1728. }
  1729. //cos曲线
  1730. U.UF.Math.Cos = function (x, y, r, c, w) {
  1731. for (var i = 0; i < r; i++) U.UF.Math.DrawPoint(x + i, y + Math.cos(i / 180 * Math.PI) * 100, c, w);
  1732. }
  1733. //画圆边框
  1734. U.UF.Math.Circle = function (x, y, r, c, w) {
  1735. var j, i = 0, _s, _UX, _UY; w = w || 1;
  1736. while (i < 360) {
  1737. _UX = Math.sin(Math.PI / 180 * i) * r; _UY = Math.cos(Math.PI / 180 * i) * r; _s = w / 100;
  1738. _s = _s < 0.2 ? 0.2 : (_s > 1 ? 1 : _s); U.UF.Math.DrawPoint(_UX + x, _UY + y, c, w); i += _s;
  1739. }
  1740. }
  1741. //多边形
  1742. U.UF.Math.Polygon = function (xye, c, w) {
  1743. var i, x, y, _UL = xye.length;
  1744. for (i = 0; i < _UL; i++) { U.UF.Math.DrawLine(xye[i].x, xye[i].y, xye[i == _UL - 1 ? 0 : i + 1].x, xye[i == _UL - 1 ? 0 : i + 1].y, w, c); }
  1745. }
  1746. //#endregion
  1747. /*--------------------------------------------------------------未使用到的函数-------------------------------------------------------*/
  1748. //判断两个数组大小
  1749. U.UF.C.ciArray = function (UOE, UTE) {
  1750. return UOE.length > UTE.length;
  1751. }
  1752. //类型判断使用,统一执行调用函数
  1753. U.UF.C.exe = function () { }
  1754. //类型判断,此函数被U.UF.C.getType函数取代,暂没使用
  1755. //U.UF.C.getType = function (UAE) {
  1756. // var i, _UDE = ["Array", "Object", "Boolean", "Number", "String", "Function", "RegExp", "Date", "Error", "NaN", "Null", "Undefined"];
  1757. // for (i = 0; i < _UDE.length; i++) { if (U.UF.M["is" + _UDE[i]](UAE)) { return _UDE[i]; } }//判断该UAE是什么类型
  1758. //}
  1759. //-------------------------------------------------------------------------------------------
  1760. /**
  1761. * 类型判断
  1762. * @param {object} 需要判断参数类型.
  1763. */
  1764. U.UF.C.getType =function (obj){
  1765. return Object.prototype.toString.call(obj)//判断该传入的参数是什么类型
  1766. }
  1767. //判断对象
  1768. U.UF.Ut.compareObject = function (UOE, UTE) {
  1769. var i, j, _USE = [0, 0], _UDE = arguments;
  1770. if (_UDE.length) {
  1771. for (i = 0; i < _UDE.length; i++) {
  1772. for (j in _UDE[i]) { (_UDE[i].hasOwnProperty(j)) && (_USE[i]++); }
  1773. }
  1774. return _USE[0] > _USE[1];
  1775. }
  1776. }
  1777. //判断字符串
  1778. U.UF.Ut.compareString = function (UOE, UTE) {
  1779. return UOE.localeCompare(UTE) == 1;
  1780. }
  1781. //判断数字
  1782. U.UF.Ut.compareNumber = function (UOE, UTE) {
  1783. return UOE > UTE;
  1784. }
  1785. //判断时间
  1786. U.UF.Ut.compareDate = function (UOE, UTE) {
  1787. return U.UF.D.sizeComparison(UOE, UTE);
  1788. }
  1789. //判断是否为 Symbol
  1790. U.UF.C.isSymbol = function (UDE) {
  1791. if (UDE) { return (typeof UDE == "symbol" || U.UF.C.getType(UDE) == "Symbol"); }
  1792. }
  1793. //转化成数字
  1794. /**
  1795. * 判断是否为元素
  1796. *
  1797. * @param {string} 元素
  1798. * @return {boolean} 返回是否为元素 同时不为文本元素
  1799. */
  1800. U.UF.C.toInteger = function (UDE) {
  1801. var _URE = 0; UDE = Number(UDE);
  1802. if (!isNaN(UDE) && isFinite(UDE)) {
  1803. _URE = UDE;
  1804. }
  1805. else {
  1806. UDE = UDE || 0; UDE = (UDE > 0 ? 1 : -1) * Math.floor(Math.abs(UDE));
  1807. }
  1808. return Math.max(Math.min(_URE, Number.MAX_SAFE_INTEGER), 0);
  1809. }
  1810. //监视
  1811. U.UF.C.observe = function () {
  1812. U.UF.EV.boundProperties();
  1813. }
  1814. //取消监视
  1815. U.UF.C.unobserve = function () {
  1816. U.UF.EV.boundProperties();
  1817. }
  1818. //#region jsonp跨域获取数据,1473的项目跨域到百度,只能通过js方式进行跨域。js引用百度的一个js,百度返回一个值。就可以跨域了。
  1819. /**
  1820. * jsonp跨域获取数据初始化
  1821. *
  1822. * @param {object} jsonp参数
  1823. ----------[call] 回调函数
  1824. ----------[parameter] 回调参数
  1825. * @return {string} jsonp类对象
  1826. */
  1827. U.A.Jsonp = $.Jsonp = function (UDE) {
  1828. var _UTE = new U.A.Jsonp.init(UDE); //初始化jsonp类
  1829. _UTE.send(); //发送请求
  1830. return _UTE;
  1831. }
  1832. /**
  1833. * jsonp初始化对象
  1834. *
  1835. * @param {object} jsonp参数
  1836. ----------[call] 回调函数
  1837. ----------[parameter] 回调参数
  1838. */
  1839. U.A.Jsonp.init = function (UDE) { //初始化Jsonp对象
  1840. U.UF.C.AddObj(this, UDE);
  1841. }
  1842. U.A.Jsonp.init.prototype = {
  1843. /**
  1844. * jsonp发送请求数据
  1845. *
  1846. */
  1847. send: function () {
  1848. var _URL = this.url, //发送的地址
  1849. _UCE = this.call, //发送的回调函数
  1850. _UPE = this.parameter, //发送的参数
  1851. UDID = U.UF.EV.eventDelegation(function(){this.success();}).id; //设置委托状态 等待回调
  1852. this.UFE = U.UF.DL.asynLoadJs(_URL + (_UCE ? "?callback=" + _UDID + "&" : "") + (_UPE ? "parameter=" + U.UF.C.urlEncode(_UPE) : ""), "js", function(){this.Asyn();}, null, true); //请求数据等待回调
  1853. },
  1854. //异步加载成功
  1855. Asyn: function () { },
  1856. /**
  1857. * jsonp异步回调
  1858. *
  1859. */
  1860. success: function (r) {
  1861. (this.call) && (this.call(r)); //执行回调函数
  1862. U.selectEl(this.UFE).remove(); //删除遗留的jsonp数据文件
  1863. }
  1864. }
  1865. //#endregion
  1866. U.UF.S.browsers = {
  1867. msie: /msie ([\d.]+)|(trident)\/([\d.]+)/, //ie正则
  1868. firefox: /firefox\/([\d.]+)/, //firfox正则
  1869. chrome: /chrome\/([\d.]+)/, //chrome正则
  1870. opera: /opera.([\d.]+)/, //opera正则
  1871. safari: /version\/([\w.]+).*(safari)/ //safari正则
  1872. };
  1873. /**
  1874. 例:/disk?id=1235; 拆分为host:www.1473.cn search:id=123
  1875. * 获取url
  1876. *
  1877. * @param {string} url值
  1878. * @return {object} 返回url对象
  1879. ----------[host] 返回域的地址
  1880. ----------[search] 返回search
  1881. */
  1882. U.UF.C.splitUrl = function (url) {
  1883. //UURL url
  1884. var _UDAD = $$("a", { "href": url }); //新建a标签
  1885. return { "host": _UDAD.href.replace(_UDAD.search, ""), "search": _UDAD.search };
  1886. }
  1887. //http://static.zhihu.com/static/js/v2/ui/editor_plugin_code.js
  1888. /*
  1889. var _ = this.getStateTuple(), state = _.state, range = _.range, code = _.code
  1890. if (state !== Plugin.State.EDITABLE) return
  1891. var text, textType = 'text/plain'
  1892. var clipboard = e.getBrowserEvent().clipboardData
  1893. if (clipboard) { // w3c(webkit,opera...)
  1894. if (clipboard.types && goog.array.contains(clipboard.types, textType)) {
  1895. e.preventDefault()
  1896. text = clipboard.getData(textType)
  1897. this.replaceText(range, text)
  1898. }
  1899. } else if (window.clipboardData) { // IE
  1900. text = window.clipboardData.getData('Text')
  1901. if (text) {
  1902. e.preventDefault()
  1903. this.replaceTextIE(range, text)
  1904. }
  1905. } else { // FF
  1906. // TODO:rewrite
  1907. var offset = range.getStartOffset()
  1908. var selectedLength = range.getText().length
  1909. var codeLength = function () {
  1910. return code.firstChild ? goog.editor.node.getLength(code.firstChild) : 0
  1911. }
  1912. var endLength = codeLength() - offset - selectedLength
  1913. setTimeout(function () {
  1914. Plugin.cleanup(code)
  1915. var caretOffset = codeLength() - endLength
  1916. if (code.firstChild) {
  1917. goog.dom.Range.createCaret(code.firstChild, Math.max(offset, caretOffset)).select()
  1918. }
  1919. })
  1920. }
  1921. */
  1922. /**
  1923. * 右键菜单定位
  1924. *
  1925. * @param {string} 需要定位的右键菜单
  1926. */
  1927. /*U.UF.C.rightClickMenuLocation = function (UDOD) {
  1928. //UDOD 需要定位的元素
  1929. var _UDPD = U.UF.EL.offsetParent(UDOD), //获取元素offsetParent
  1930. _UEV = U.UF.C.GetMousep(_UDPD), //当前鼠标位置
  1931. _UW = [UDOD.offsetWidth, _UDPD.offsetWidth], //记录UUOD的offsetWidth属性
  1932. _UH = [UDOD.offsetHeight, _UDPD.offsetHeight]; //记录UUOD的offsetHeight属性
  1933. _UEV["X"] = ((_UW[0] + _UEV["X"]) > _UW[1]) ? _UEV["X"] - _UW[0] : _UEV["X"]; //设置top最大范围
  1934. _UEV["Y"] = ((_UH[0] + _UEV["Y"]) > _UH[1]) ? _UEV["Y"] - _UH[0] : _UEV["Y"]; //设置left最大范围
  1935. $(UDOD).addAttrArray({ "style": { "cssText": "top:" + _UEV["Y"] + "px;left:" + _UEV["X"] + "px"} }); //右键菜单的位置
  1936. }*/
  1937. /**
  1938. * 获取元素的定位位置
  1939. *
  1940. * @param {element} 元素
  1941. * @return {array} 返回元素的位置
  1942. ----------[0] 元素的top
  1943. ----------[1] 元素的left
  1944. */
  1945. /*U.UF.M.pageXY = function (UDOD) {
  1946. var _UTP,
  1947. _UDE = [0, 0]; //需要返回的元素的位置
  1948. while (UDOD) {
  1949. _UTP = U.UF.EL.getStyle(UDOD, "position"); //元素的position
  1950. if (_UTP != "static") {
  1951. _UDE[0] += UDOD.offsetTop; //元素的上距
  1952. _UDE[1] += UDOD.offsetLeft; //元素的左距
  1953. }
  1954. UDOD = UDOD.offsetParent;
  1955. }
  1956. return _UDE; //返回
  1957. }*/
  1958. /**
  1959. * 判断元素的属性是自定义属性还是系统属性 true自定义 false固有
  1960. *
  1961. * @param {element} 当前元素
  1962. * @param {string} 为元素的各属性
  1963. * @return {number} 位置
  1964. */
  1965. /*U.UF.EL.isCustomAttributes = function (UDOD, UTP) {
  1966. UDOD = UDOD || $$("div");
  1967. var _UAE = UDOD.attributes; //_UAE 为UDOD的属性集合
  1968. if (_UAE) {
  1969. if (_UAE[UTP]) { //IE6-7判断是否是自定义属性
  1970. return _UAE[UTP].expando == true;
  1971. }
  1972. else { //是否为自定义属性
  1973. return UDOD.getAttribute(UTP) !== null || UDOD[UTP] === void 0;
  1974. }
  1975. }
  1976. }*/
  1977. /**
  1978. * 判断元素的位于第几个
  1979. *
  1980. * @param {element} 当前元素
  1981. * @return {number} 位置
  1982. */
  1983. /*U.UF.EL.indexOfParent = function (UDOD) {
  1984. var _UDAD = U.selectEl($(UDOD).Parent()).Child();
  1985. return _UDAD.indexOf(UDOD); //判断元素在指定的位置第几个
  1986. }*/
  1987. //1、[{parentid:1, username:"a"},{parentid:1,username:"b"},{parentid:2,username:"c"}] = [{parentid:1, username:"a"},{parentid:1,username:"b"}]
  1988. ////数组、obj({parentid:1,username:"a"}); 10
  1989. //U.Json.select = function (UCE, UKE, UT, USE, UDE) {//条件获取
  1990. // var i, _UTF; USE = USE || []; UDE = arguments.length > 4 ? UDE : this.Value;
  1991. // if (Array.isArray(UDE)) { for (i = 0; i < UDE.length; i++) { if (USE.length == UT) { break; } this.select(UCE, UKE, UT, USE, UDE[i]); } }
  1992. // else {//对象添加处理
  1993. // if (this.ifExists(UCE, UDE)) { USE.push(UDE); } //确定本身是否为目标
  1994. // if (UKE === true) { for (i in UDE) { if (USE.length == UT) { break; }; if (U.UF.C.getType(UDE[i]) == "object") { U.Json(UDE[i], this).select(UCE, UKE, UT, USE); } } } //全盘搜索
  1995. // else if (UKE) { if (USE.length != UT && UDE[UKE]) { U.Json(UDE[UKE], this).select(UCE, UKE, UT, USE); }; } //条件搜索
  1996. // }
  1997. // return USE;
  1998. //}
  1999. //1、[{parentid:1, username:"a"},{parentid:1,username:"b"},{parentid:2,username:"c"}] = [{parentid:1, username:"a"},{parentid:1,username:"b"}]
  2000. //数组、obj({parentid:1,username:"a"});
  2001. //U.Json.ifExists = function (UCE, UDE) { //判断数据是否符合条件
  2002. // var i, _UTF;
  2003. // UDE = UDE || this.Value;
  2004. // //判断条件是否就是指定判断的元素,如果是直接返回true,
  2005. // if (UDE === UCE) {
  2006. // return true;
  2007. // }
  2008. // //循环条件,当条件中所有的条件都满足的时候,为true;否则为false
  2009. // for (i in UCE) {
  2010. // if (UCE.hasOwnProperty(i)) {
  2011. // if (UDE[i] === UCE[i]) {
  2012. // _UTF = true;
  2013. // }
  2014. // else {
  2015. // _UTF = false;
  2016. // break;
  2017. // }
  2018. // }
  2019. // }
  2020. // return _UTF;
  2021. //}
  2022. ////初始化json操作区域
  2023. ////
  2024. //U.Json = function () {
  2025. // var _um = U.UF.M; //引用
  2026. // //初始化方法,类似Java中的构造函数,自动执行
  2027. // var _UME, _UFE = function (UDE, UPE) {
  2028. // //new的方式进入
  2029. // if (this.init == _UME.init) {
  2030. // this.init(UDE, UPE);
  2031. // }
  2032. // //直接以函数的方式进入
  2033. // else {
  2034. // return new _UME.init(UDE, UPE);
  2035. // }
  2036. // },
  2037. // cb = function (UTP) { //通过类型获取回调函数形式
  2038. // return function (UDE) {
  2039. // if (UTP == null) {
  2040. // return UDE;
  2041. // } //直接返回使用
  2042. // else if (U.UF.C.isFunction(UTP)) {
  2043. // return UTP.apply(null, arguments);
  2044. // } //函数使用
  2045. // else if (U.UF.C.isObject(UTP)) {
  2046. // return _UME.ifExists(UTP, UDE);
  2047. // } //判断对象的使用
  2048. // return UDE[UTP]; //字符串或者数字
  2049. // }
  2050. // },
  2051. // //
  2052. // maxAndmin = function (UDE, UCE, UII, UTP) {//最大最小统一使用区域
  2053. // if (UDE) {
  2054. // var _USE = -Infinity,
  2055. // _UNE = -Infinity,
  2056. // _UCB = cb(UCE);
  2057. // UDE.forEach(function (UVE, UI) {
  2058. // var _UKE = _UCB.call(UII, UVE, UI, UDE),
  2059. // _UTF = (UTP == "max" && _UKE > _UNE) || (UTP == "min" && _UKE < _UNE);
  2060. // if (_UTF || (_USE === _UNE && _UNE === -Infinity)) {
  2061. // _UNE = _UKE;
  2062. // _USE = UVE;
  2063. // } //设置值
  2064. // });
  2065. // return _USE;
  2066. // }
  2067. // else {
  2068. // throw new Error("数组异常");
  2069. // }
  2070. // };
  2071. // //使用方法集
  2072. // _UFE.prototype = _UME = {
  2073. // init: function (UDE, UPE) { //初始化对象
  2074. // this.Value = UDE;
  2075. // this.Parent = UPE || window;
  2076. // },
  2077. // Clone: function (UDE) { //克隆对象 深克隆
  2078. // var i, _UCE; UDE = UDE || this.Value;
  2079. // if (U.UF.C.isObject(UDE)) {
  2080. // _UCE = new UDE.constructor(); //通过源生成对象
  2081. // if (Array.isArray(_UCE)) {
  2082. // for (i = 0; i < UDE.length; i++) {
  2083. // _UCE.push(arguments.callee(UDE[i]));
  2084. // }
  2085. // } //数组处理
  2086. // else {
  2087. // for (i in UDE) {
  2088. // if (UDE.hasOwnProperty(i)) {
  2089. // _UCE[i] = arguments.callee(UDE[i]);
  2090. // }
  2091. // }
  2092. // } //对象处理
  2093. // return _UCE;
  2094. // }
  2095. // return UDE;
  2096. // },
  2097. // Add: function (UCE) { //对象添加值
  2098. // var i;
  2099. // var _UDE = this.Value;
  2100. // //判断是对象或者数组,如为数组,采用集合添加模式
  2101. // if (!Array.isArray(_UDE)) {
  2102. // for (i in UCE) {
  2103. // if (UCE.hasOwnProperty(i)) {
  2104. // _UDE[i] = UCE[i];
  2105. // }
  2106. // }
  2107. // }
  2108. // //集合添加模式,但好像没有进入这一个分支,在上传时进入此分支。
  2109. // else {
  2110. // for (i = 0; i < _UDE.length; i++) {
  2111. // U.UF.C.AddObj(_UDE[i], UCE); //本身添加,太消耗了
  2112. // }
  2113. // } //数组方式为每一个都添加
  2114. // return this.Value;
  2115. // },
  2116. // selectOne: function (UCE, UKE) {//搜索一个(跨层次)
  2117. // return (this.select(UCE, UKE, 1))[0];
  2118. // },
  2119. // invoke: function (UN, UDE) { //自动调用
  2120. // var _UT = this; (UDE) && (_UT = U.Json(UDE));
  2121. // if (_UT[UN]) { return _UT[UN](); } //直接运行
  2122. // },
  2123. // sort: function (UCE, UVE, UDE) { //排序
  2124. // UDE = UDE || this.Value; var _UKE, _UTF = U.UF.C.getType(UDE); (U.UF.C.isString(UCE)) && (_UKE = {}, _UKE[UCE] = 1, UCE = _UKE);
  2125. // if (_UTF === "array") { //数组排序
  2126. // (UDE.sort(function (UO, UT) {
  2127. // var i, _UIE, _UTF;
  2128. // if (U.UF.C.isFunction(_UTF)) { _UTF = UCE(UO, UT); } //函数回调查看
  2129. // else if (U.UF.C.isObject(UCE)) { //对象处理
  2130. // for (i in UCE) {
  2131. // if (UCE.hasOwnProperty(i)) {
  2132. // _UTF = typeof (UO[i] || UT[i] || "");
  2133. // _UTF = _um["ci" + _UTF.capitalizeFirstLetter()](UO[i], UT[i]);
  2134. // _UIE = UCE[i];
  2135. // break;
  2136. // }
  2137. // } //排序
  2138. // }
  2139. // else {
  2140. // _UTF = UO > UT;
  2141. // } _UIE = _UIE || (UVE == -1 ? -1 : 1);
  2142. // return _UIE * ((_UTF == 1 || _UTF == true) ? 1 : -1);
  2143. // }));
  2144. // return UDE;
  2145. // }
  2146. // else {
  2147. // throw new Error(UDE + " is not an Array");
  2148. // }
  2149. // },
  2150. // groupBy: function (UCE, UDE) {//分组查询
  2151. // var _USE = {}, _UCB = cb(UCE); UDE = UDE || this.Value;
  2152. // UDE.forEach(function (UVE, UI) {
  2153. // var _UKE = _UCB(UVE);
  2154. // (_USE[_UKE] == null) && (_USE[_UKE] = []);
  2155. // _USE[_UKE].push(UVE);
  2156. // });
  2157. // return _USE;
  2158. // },
  2159. // toKeyArray: function (UCE, UDE) { //获取制定键的值
  2160. // var _USE = []; UDE = UDE || this.Value;
  2161. // if (!UDE.length) {
  2162. // _USE.push(UDE[UCE]);
  2163. // } else {
  2164. // UDE.forEach(function (UVE, UI) {
  2165. // var _UCB = cb(UCE);
  2166. // _USE.push(_UCB(UVE, UI, UDE));
  2167. // });
  2168. // }
  2169. // return _USE;
  2170. // },
  2171. // Where: function (UCE, UT, UDE, USE) { //条件选择 $gt(>) $lte(<=) $gt(>) $gte(>=) $ne(!=) $in(=) $nin(!=)
  2172. // UDE = UDE || this.Value;
  2173. // var i, j, k, z, _UGE, _UKE, _UFE, _UTE,
  2174. // _UTF = U.UF.C.getType(UDE);
  2175. // USE = USE || [];
  2176. // if (_UTF === "object") { //普通对象处理
  2177. // _UTF = []; for (i in UCE) {
  2178. // if (UCE.hasOwnProperty(i)) {
  2179. // _UGE = UCE;
  2180. // _UTF = [];
  2181. // _UTE = false;
  2182. // switch (i) {
  2183. // case "$or": _UGE = UCE[i];
  2184. // _UTE = true;
  2185. // break;
  2186. // } //or使用
  2187. // _UFE: for (j in _UGE) {
  2188. // if (_UGE.hasOwnProperty(j)) {
  2189. // _UKE: for (k in _UGE[j]) {
  2190. // if (_UGE[j].hasOwnProperty(k)) {
  2191. // switch (j) {
  2192. // case "$e": _UTF.push(UDE[k] == _UGE[j][k]); break; //=
  2193. // case "$ne": _UTF.push(UDE[k] != _UGE[j][k]); break; //!=
  2194. // case "$lt": _UTF.push(UDE[k] < _UGE[j][k]); break; //<
  2195. // case "$lte": _UTF.push(UDE[k] <= _UGE[j][k]); ; break; //<=
  2196. // case "$gt": _UTF.push(UDE[k] > _UGE[j][k]); break; //>
  2197. // case "$gte": _UTF.push(UDE[k] >= _UGE[j][k]); break; //>=
  2198. // case "$in": for (z = 0; z < _UGE[j][k].length; z++) {
  2199. // if (_UGE[j][k][z] == UDE[k]) {
  2200. // _UTF.push(true);
  2201. // break;
  2202. // }
  2203. // } _UTF = !_UTF;
  2204. // break; //in
  2205. // case "$nin": for (z = 0; z < _UGE[j][k]; z++) {
  2206. // if (_UGE[j][k][z] == UDE[k]) { continue _UKE; }
  2207. // }
  2208. // _UTF.push(true);
  2209. // break; //not in
  2210. // case "$all": for (z = 0; z < _UGE[j][k]; z++) {
  2211. // if (_UGE[j][k][z] != UDE[k]) { continue _UKE; }
  2212. // }
  2213. // _UTF.push(true);
  2214. // break; //匹配所有
  2215. // case "$exists": break; //存在文档
  2216. // case "$mod": break; //取模函数
  2217. // case "$not": break; //不匹配
  2218. // }
  2219. // }
  2220. // }
  2221. // }
  2222. // }
  2223. // }
  2224. // if ((_UTE === true && _UTF.indexOf(true) > -1) || (_UTF.indexOf(false) == -1)) {
  2225. // USE.push(UDE);
  2226. // }
  2227. // }
  2228. // }
  2229. // else if (_UTF == "array") { //数组选择
  2230. // for (i = 0; i < UDE.length; i++) {
  2231. // if (USE.length == UT) {
  2232. // break;
  2233. // }
  2234. // this.Where(UCE, UT, UDE[i], USE);
  2235. // }
  2236. // }
  2237. // return USE;
  2238. // },
  2239. // select: function (UCE, UKE, UT, USE, UDE) {//条件获取
  2240. // var i, _UTF;
  2241. // USE = USE || [];
  2242. // UDE = arguments.length > 4 ? UDE : this.Value;
  2243. // if (Array.isArray(UDE)) {
  2244. // for (i = 0; i < UDE.length; i++) {
  2245. // if (USE.length == UT) {
  2246. // break;
  2247. // }
  2248. // this.select(UCE, UKE, UT, USE, UDE[i]);
  2249. // }
  2250. // }
  2251. // else {//对象添加处理
  2252. // if (this.ifExists(UCE, UDE)) {
  2253. // USE.push(UDE);
  2254. // } //确定本身是否为目标
  2255. // if (UKE === true) {
  2256. // for (i in UDE) {
  2257. // if (USE.length == UT) {
  2258. // break;
  2259. // };
  2260. // if (U.UF.C.getType(UDE[i]) == "object") {
  2261. // U.Json(UDE[i], this).select(UCE, UKE, UT, USE);
  2262. // }
  2263. // }
  2264. // } //全盘搜索
  2265. // else if (UKE) {
  2266. // if (USE.length != UT && UDE[UKE]) {
  2267. // U.Json(UDE[UKE], this).select(UCE, UKE, UT, USE);
  2268. // };
  2269. // } //条件搜索
  2270. // }
  2271. // return USE;
  2272. // },
  2273. // Change: function (UCE, UDE) {//修改值
  2274. // var i, _UDE = arguments.length > 1 ? UDE : this.Value, _UTF = U.UF.C.getType(_UDE);
  2275. // if (_UTF == "object") {
  2276. // for (i in UCE) {
  2277. // if (UCE.hasOwnProperty(i)) {
  2278. // _UDE[i] = UCE[i];
  2279. // }
  2280. // }
  2281. // } //对象修改形式
  2282. // else if (_UTF == "array") {
  2283. // for (i = 0; i < _UDE.length; i++) {
  2284. // this.Change(UCE, _UDE[i]);
  2285. // }
  2286. // } //数组修改方式 U.Json(_UDE[i], this).Change(UCE);
  2287. // return _UDE;
  2288. // },
  2289. // //obj 是一个object,是待删除的元素的关键字,在数组中删除含有该object的元素,digui是bool型
  2290. // //UKE 是 1、bool类型。如果为true,表示全递归查找数据,默认为false,不递归查找
  2291. // // 2、或者str 例如:{"directory":"C盘","children":[{"directory":"windows","children":[]},{"directory":"programfiles","children":[]}]} 中的"children",根据此key去递归向下查找数据。找到数据后,匹配第一个参数,进行删除。
  2292. // // 3、是递归参数,外部不调用。
  2293. // del: function (obj, key, data) { //删除 允许递归
  2294. // var i, _deldata;
  2295. // data = data || this.Value; //传递进来的json数据
  2296. // var _type = U.UF.C.getType(data); //获取元素类型
  2297. // var _delarray = []; //返回的删除数据。
  2298. // if (_type == "object") { //对象删除
  2299. // if (this.ifExists(obj, data)) {
  2300. // delete data;
  2301. // _delarray.push(data);
  2302. // }
  2303. // else if (key === true) { //递归删除
  2304. // for (i in data) {
  2305. // _deldata = this.del(obj, key, data[i]); //递归删除该数据
  2306. // _delarray = _delarray.concat(_deldata); //把删除的数据追加到变量中
  2307. // }
  2308. // }
  2309. // else if (key && data[key]) { //根据指定的key进行递归删除
  2310. // _deldata = this.del(obj, key, data[key]); //根据指定的key递归删除该数据
  2311. // _delarray = data.concat(_deldata);
  2312. // }
  2313. // }
  2314. // //数组删除指定obj条件的元素
  2315. // else if (_type === "array") {
  2316. // for (i = 0; i < data.length; i++) {
  2317. // //循环删除 获取移除的元素
  2318. // _deldata = this.del(obj, key, data[i]);
  2319. // if (_deldata.length) { //判断是否移除了元素,length大于0相当于移除超过一个元素。
  2320. // data.splice(i, 1); //数组的系统移除方法
  2321. // _delarray = _delarray.concat(_deldata); //把移除的元素添加到变量中
  2322. // i--; //由于上面用了循环i++ 移除元素后 数组的下标减一了,所以这里用i--让i回到前面一个循环,这样即使数组删除了一个元素也不会直接跳过下一个元素的循环
  2323. // }
  2324. // }
  2325. // } //数组使用
  2326. // return _delarray;
  2327. // },
  2328. // RecurD: function (UCE, UKE, UTP) { //数据递归
  2329. // var _UAE, _UGE, i = UCE ? (_UGE = [UCE], 0) : (_UGE = [], -1), _UDE = this.Value;
  2330. // if (Array.isArray(_UDE)) {
  2331. // for (; i < _UGE.length; i++) {
  2332. // if (i > -1) { for (j in UKE) { UKE[j] = _UGE[i][UTP]; } }
  2333. // _UAE = U.Json.select(_UDE,UKE)[0]; (_UAE) && (_UGE.push(_UAE));
  2334. // }
  2335. // }
  2336. // else {
  2337. // while (_UGE[4][UKE]) {
  2338. // _UDE.push(_UGE[4][_UPID]);
  2339. // _UPID = _UGE[4][i]["UserDirectoryParentID"]
  2340. // }
  2341. // }
  2342. // return _UGE;
  2343. // },
  2344. // NL: function (UCE, USE) { //通过数组生成集合
  2345. // var i, _UDE = this.Value;
  2346. // for (i = 0; i < UCE.length; i++) {
  2347. // _UDE[UCE[i]] = USE[i];
  2348. // }
  2349. // return _UDE;
  2350. // },
  2351. // Reset: function (UCE) { //数组排序
  2352. // var i, _UDE = this.Value;
  2353. // for (i = 0; i < _UDE.length; i++) {
  2354. // if (this.ifExists(UCE, _UDE[i])) {
  2355. // _UDE.unshift(_UDE.splice(i, 1)[0]);
  2356. // }
  2357. // }
  2358. // return _UDE;
  2359. // },
  2360. // Like: function (UCE, UT, UKE, USE) { //like使用
  2361. // var i, _US, _UE,
  2362. // _UDE = this.Value,
  2363. // _UTF = U.UF.C.getType(_UDE);
  2364. // USE = USE || [];
  2365. // if (_UTF == "object") {
  2366. // for (i in UCE) {
  2367. // if (UCE.hasOwnProperty(i)) {
  2368. // if (_UDE[i] != UCE[i]) {
  2369. // if (typeof _UDE[i] == "object" || typeof _UDE[i] == "object") {
  2370. // return;
  2371. // }
  2372. // _US = (_UDE[i] + "").toLocaleLowerCase(); _UE = (UCE[i] + "").toLocaleLowerCase();
  2373. // if (!(_US.indexOf(_UE) > -1 || _UE.indexOf(_US) > -1)) {
  2374. // return;
  2375. // }
  2376. // }
  2377. // }
  2378. // }
  2379. // USE.push(_UDE);
  2380. // }
  2381. // else if (_UTF === "array") {
  2382. // for (i = 0; i < _UDE.length; i++) {
  2383. // U.Json(_UDE[i], this).Like(UCE, UT - USE.length, UKE, USE);
  2384. // if (USE.length >= UT) {
  2385. // USE.splice(UT, USE.length);
  2386. // break;
  2387. // }
  2388. // }
  2389. // }
  2390. // return USE;
  2391. // },
  2392. // GZDL: function (UCE, UDE) {//选择指定字段的值
  2393. // var i, _UKE = {}, _UDE = this.Value;
  2394. // (U.UF.C.isString(UCE)) && (UCE = [UCE]);
  2395. // for (i = 0; i < UCE.length; i++) { _UKE[UCE[i]] = _UDE[UCE[i]]; }
  2396. // return _UKE;
  2397. // },
  2398. // //UCE是一个object,UDE是json。判断json中的数据是否包含该object。
  2399. // //例:{name:张三,身高:1.8,体重:150} 查找{name:张三,身高:1.8},则符合条件,返回true,查找{name:张三,身高:1.5},则不符合条件,返回false.
  2400. // ifExists: function (UCE, UDE) { //判断数据是否符合条件
  2401. // var i, _UTF;
  2402. // UDE = UDE || this.Value;
  2403. // //判断条件是否就是指定判断的元素,如果是直接返回true,
  2404. // if (UDE === UCE) {
  2405. // return true;
  2406. // }
  2407. // //循环条件,当条件中所有的条件都满足的时候,为true;否则为false
  2408. // for (i in UCE) {
  2409. // if (UCE.hasOwnProperty(i)) {
  2410. // if (UDE[i] === UCE[i]) {
  2411. // _UTF = true;
  2412. // }
  2413. // else {
  2414. // _UTF = false;
  2415. // break;
  2416. // }
  2417. // }
  2418. // }
  2419. // return _UTF;
  2420. // },
  2421. // //#error
  2422. // Merger: function (UDE) {//合并成数组分组
  2423. // UDE = UDE || this.Value;
  2424. // var i,
  2425. // _USE = [],
  2426. // _UTP = U.UF.C.getType(this.Value);
  2427. // if (_UTP == "object") {
  2428. // for (i in UDE) {
  2429. // if (UDE.hasOwnProperty(i)) {
  2430. // _USE = _USE.concat(UDE[i]);
  2431. // }
  2432. // }
  2433. // }
  2434. // else if (_UTP == "array") {
  2435. // for (i = 0; i < UDE.length; i++) {
  2436. // _USE = _USE.concat(UDE[i]);
  2437. // }
  2438. // }
  2439. // return _USE;
  2440. // },
  2441. // ToString: function () { return U.UF.C.jsonToStr(this.Value); }, //把json 数组变成string
  2442. // Each: function (cb, UDE) { //数据遍历
  2443. // if (U.UF.C.isFunction(cb)) {
  2444. // UDE = UDE || this.Value;
  2445. // var i,
  2446. // _UTF = U.UF.C.getType(UDE);
  2447. // if (_UTF == "object") {
  2448. // for (i in UDE) {
  2449. // if (UDE.hasOwnProperty(i)) { cb(UDE[i], i, UDE) };
  2450. // }
  2451. // }
  2452. // else if (_UTF === "array") {
  2453. // Array.forEach(function () {
  2454. // cb.apply(UDE, arguments);
  2455. // });
  2456. // }
  2457. // }
  2458. // return this;
  2459. // },
  2460. // //未使用
  2461. // max: function (UCE, UTI, UDE) {//获取最大
  2462. // maxAndmin(UDE || this.Value, UCE, UTI, "max");
  2463. // },
  2464. // min: function () {//获取最小
  2465. // maxAndmin(UDE || this.Value, UCE, UTI, "min");
  2466. // },
  2467. // object: function (UCE, UDE) {//把数组转化成object
  2468. // var i, _USE = {}; UDE = UDE || this.Value;
  2469. // for (i = 0; i < UCE.length; i++) {
  2470. // return _USE[UCE[i]] = UDE[i];
  2471. // }
  2472. // return _USE;
  2473. // },
  2474. // countBy: function (UFE, UDE) { //统计使用
  2475. // UDE = UDE || this.Value;
  2476. // var i, _UTF,
  2477. // _USE = {},
  2478. // _UTP = U.UF.C.getType(UDE);
  2479. // if (_UTP == "array") {
  2480. // for (i = 0; i < UDE.length; i++) {
  2481. // _USE[UFE(UDE[i])] = (_USE[UFE(UDE[i])] || 0) + 1;
  2482. // }
  2483. // }
  2484. // else {
  2485. // throw new Error(UDE + " is not an Array");
  2486. // }
  2487. // },
  2488. // where: function (UCE, UDE) { //获取制定的值
  2489. // var i = 0, _USE = []; UDE = UDE || this.Value;
  2490. // while (i++ < _UDE.length) {
  2491. // (this.ifExists(UCE, UDE)) && (_USE.push(UDE[i]));
  2492. // }
  2493. // return _USE;
  2494. // },
  2495. // count: function () {//统计返回的数
  2496. // return this.Value.length;
  2497. // },
  2498. // distinct: function () {//去除重复的数据
  2499. // },
  2500. // find: function () { //模拟数据库查询
  2501. // },
  2502. // each: function () { },
  2503. // has: function (UCE, UDE) {
  2504. // UDE = UDE || this.Value; var i;
  2505. // if (typeof UCE == "string") {
  2506. // if (UCE in UDE && UDE.hasOwnProperty(UCE)) {
  2507. // return true;
  2508. // }
  2509. // }
  2510. // else {
  2511. // for (i in UCE) {
  2512. // if (!(i in UDE && UDE.hasOwnProperty(i))) {
  2513. // return false;
  2514. // }
  2515. // } return true;
  2516. // } return false;
  2517. // },
  2518. // range: function (US, UE, UT) { //产生带编号的数组
  2519. // var _UDE = [],
  2520. // i = US || 0,
  2521. // _UL = (UE - US);
  2522. // UT = UT || (UE - US) > 0 ? 1 : -1;
  2523. // if (_UL) {
  2524. // _UL = Math.max(Math.ceil(_UL /= UT), 0);
  2525. // for (i = 0; i < _UL; i++) {
  2526. // US += UT; _UDE.push(US);
  2527. // }
  2528. // }
  2529. // return _UDE;
  2530. // },
  2531. // isEqual: function (UCE, UDE) { //两个值深度比较
  2532. // UDE = UDE || this.Value;
  2533. // var i,
  2534. // _UTP = U.UF.C.getType(UDE),
  2535. // _UFE = Object.prototype.toString.call;
  2536. // if (_UFE(UDE) === _UFE(UCE)) {
  2537. // if (_UTP == "object") {
  2538. // return (this.ifExists(UCE, UDE) && this.IsTF(UDE, UCE));
  2539. // } //对象判断
  2540. // else if (_UTP == "array" && UDE.length == UCE.length) {
  2541. // i = UDE.length;
  2542. // while (i--) {
  2543. // if (!this.isEqual(UDE[i], UCE[i])) {
  2544. // return false;
  2545. // }
  2546. // }
  2547. // } //数组判断
  2548. // return true;
  2549. // }
  2550. // return false;
  2551. // },
  2552. // isMatch: function (UCE, UDE) { //判断指定的值是否存在
  2553. // UDE = UDE || this.Value;
  2554. // var i,
  2555. // _UTP = U.UF.C.getType(UDE);
  2556. // if (_UTP == "object") {
  2557. // return this.ifExists(UCE);
  2558. // } //集合使用
  2559. // throw new Error("参数必须为对象");
  2560. // }
  2561. // }
  2562. // _UME.IsTF = _UME.ifExists; //重载
  2563. // _UME.init.prototype = _UME;
  2564. // return _UFE; //返回的初始化方法,所以会自动执行java中的构造函数。
  2565. //}
  2566. //#ednregion
  2567. /** #error
  2568. * 当你点击enter键时触发的函数 待删除
  2569. *
  2570. * @param {object} resize对象
  2571. */
  2572. //U.UF.C.returnkeylogin = function (UEL, fun) {
  2573. // var i; //循环初始化
  2574. // if (event.keyCode == 13 || event.keyCode == 10) {
  2575. // if (fun) {//执行函数
  2576. // U.UF.C.apply(UEL || this, fun)();
  2577. // }
  2578. // else if (UEL) {//元素触发使用
  2579. // for (i = 0; i < UEL.length; i++) {
  2580. // UEL[i]["obj"][UEL[i]["event"]]();
  2581. // }
  2582. // }
  2583. // U.UF.EV.stopDefault(); //阻止浏览器默认事件
  2584. // }
  2585. //}
  2586. /**
  2587. * 判断字符串是否为Guid
  2588. *
  2589. * @param {string} 需要判断的字符串
  2590. * @return {boolean} 是否为guid
  2591. */
  2592. U.UF.Ut.isGuid = function (UST) {
  2593. return Guid.IsGuid(UST);
  2594. }
  2595. /**
  2596. * 是否参与for in循环的对象
  2597. *
  2598. * @param {object} 判断是否允许参加在for循环里
  2599. * @return {boolean} 允许for in
  2600. */
  2601. U.UF.Ut.isForObj = function (UDE) {
  2602. var i,
  2603. _ = ["isArray", "isFunction", "isObject"]; //三种可参与for in的
  2604. for (i = 0; i < _.length; i++) {
  2605. if (U.UF.Ut[_[i]](UDE)) {
  2606. return _[i].substr(2);
  2607. }
  2608. }
  2609. return false;
  2610. }
  2611. /**
  2612. * 判断对象是否为hemlcontrol
  2613. *
  2614. * @param {element} 元素
  2615. * @return {boolean} 判断是否为正常元素
  2616. */
  2617. U.UF.Ut.isHtmlElement = function (el) {
  2618. return el.nodeType != null || el == window || el == document || el.frames != null;
  2619. }
  2620. /**
  2621. * 此函数代替U.Json中的Add方法,以避免调试难调,速度降低的问题。
  2622. * @param {object 、 array} 自定义变量或者Array,Object等系统变量,
  2623. * @param {object} 属性的集合,形如:{ "domain": "1473.cn", "SystemId": 0}
  2624. */
  2625. U.UF.Ut.AddProperty = function (UDE, UAE) {
  2626. //判断是集合或者集合数组,分别调用上2个函数。
  2627. Array.isArray(UDE) ? U.UF.Ut.AddArr(UDE, UAE) : U.UF.C.AddObj(UDE, UAE);
  2628. }
  2629. /**
  2630. * 判断值是否等于formdate
  2631. *
  2632. * @param {object} 需要判断的FormData
  2633. * @return {boolean} 是否为FormData
  2634. */
  2635. U.UF.Ut.isFormData = function (obj) {
  2636. return obj.toString() === "[object FormData]";
  2637. }
  2638. /**
  2639. * 判断是否为基础类型
  2640. *
  2641. * @param {object} undefined function string number object
  2642. * @return {boolean} true/false
  2643. */
  2644. U.UF.Ut.isPrimitive = function (UDE) {
  2645. var i, _UCE = ["undefined", "function", "string", "number", "object"];
  2646. return _UCE.some(function (UCE, UIE) {
  2647. return (typeof UDE) == UCE;
  2648. });
  2649. }
  2650. /**
  2651. * 判断是否为传参类
  2652. *
  2653. * @param {object} 函数值
  2654. * @return {boolean} 返回是否为Arguments对象
  2655. */
  2656. U.UF.Ut.isArguments = function (UDE) {
  2657. return (typeof (UDE == "object") && U.Json.has(UDE, "callee"));
  2658. }
  2659. /**
  2660. * 判断object是否是空对象
  2661. *
  2662. * @param {object} 对象值
  2663. * @return {boolean} 是否空对象
  2664. */
  2665. U.UF.Ut.isEmpty = function (UDE) {
  2666. var i,
  2667. _UTF = true;
  2668. for (i in UDE) {
  2669. if (UDE.hasOwnProperty(i)) { _UTF = false; break; }
  2670. }
  2671. return _UTF;
  2672. }
  2673. /**
  2674. * flash加载成功后给flash设置参数
  2675. * @param {element} flash按钮
  2676. * @param {object} flash按钮大小样式 {width:"", height:""}
  2677. * @param {object} flash按钮回调函数 { error : function(e){ console.log("发生错误了") } }
  2678. * @param {string} flash上传的格式设置默认是 * 所有格式都支持
  2679. *
  2680. */
  2681. U.UF.UP.flashUploadInit = function (flashbootom, style, callback, uploadtype) {
  2682. //判断flash是否已经加载好可以设置
  2683. if (flashbootom.SetStage) {
  2684. flashbootom.SetStage(style, callback, uploadtype || "*"); //加载插件初始化
  2685. return true;
  2686. }
  2687. return false;
  2688. }