NotUse1.js 202 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946
  1. /**
  2. * 弹出1473窗体,需要删除。
  3. * UDPD 父亲元素
  4. *{object} UDE 放置窗体STYLE的地方
  5. * {int}UDE参数 [ "Embed": 是否是Iframe,
  6. * "Top": 偏移高, "Left": 偏移左, "Width": 长度, "Height": 高度,
  7. * "ContainerId": id, "titleName": 标题, "ContentId": 内容区Id, "Content": 内容,
  8. * "hasScroll": 内容区是否滚动, "hasMax": 是否允许放大, "hasMin": 是否允许缩小,
  9. * "hasDraw": 是否拉伸, "CStyle": 内容区样式, "IsR":是否移除关闭按钮
  10. * ]
  11. * UCBF 单击确认的回调函数 UCNF 单击取消的回调函数
  12. * @returns _UDOD 返回ID为U_COF的对象
  13. **/
  14. U.UF.UI.UForms = function (UDE, UDPD) {
  15. UDPD = UDPD || document.body; //选择是否有父亲元素,没有则BODY为父亲元素
  16. var i, _UIT, _UDOD, _UDTD, _UDSD, _UDCD, _UDED, _UAE, _UBE = [/%/, ["Width", "Height", "Top", "Left"]],
  17. _UCE = [ //绑定传入数据简写
  18. ["H", "up"],
  19. ["HL", "topRight"],
  20. ["HR", "topleft"],
  21. ["ML", "left"],
  22. ["MR", "right"],
  23. ["B", "down"],
  24. ["BL", "bottomLeft"],
  25. ["BR", "bottomRight"]
  26. ];
  27. for (i = 0; i < _UBE[1].length; i++) { //使用for循环绑定所传style
  28. _UBE[0].test(UDE[(_UIT = _UBE[1][i])]) && (UDE[_UIT] = US[{
  29. "Left": "Width",
  30. "Top": "Height"
  31. }[_UIT]] * UDE[_UIT].toInt() / 100)
  32. }
  33. _UDOD = $$("div", { //创建窗体
  34. "className": "UD_W UD_UIU",
  35. "id": UDE.ContainerId,
  36. "style": {
  37. "width": UDE.Width + "px",
  38. "height": UDE.Height + "px",
  39. "left": UDE.Left + "px",
  40. "top": UDE.Top + "px"
  41. }
  42. });
  43. $$("div", { "className": "UD_ICON UD_ICONl"}, _UDOD);//创建窗体的头
  44. _UDTD = $$("div", { //创建窗体的子集
  45. "className": "UD_WIMG UD_W_TB",
  46. "style": {
  47. "width": (UDE.Width - 30) + "px"
  48. },
  49. "onmousedown": [
  50. [U.UF.F.DragMouseDown, [_UDOD]]
  51. ]
  52. }, _UDOD);
  53. $$("span", {"className": "UD_W_TB_T","innerHTML": UDE.titleName}, _UDTD); //span存放文字地方
  54. _UDSD = $$("div", {"className": "UD_W_TB_WM"}, _UDTD); //创建存放对象
  55. $$("span", { //关闭窗口元素
  56. "title": "关闭",
  57. "className": "UD_ICON UD_W_TB_WM_Close",
  58. "onmousedown": U.UF.EV.stopBubble,
  59. "onclick": [
  60. [U.UF.F.closeWindow, [_UDOD, (UDE.IsR ? "remove" : "")]]
  61. ]
  62. }, _UDSD)
  63. $$("div", {"className": "UD_ICON UD_ICONR"}, _UDOD); //创建对象
  64. _UDCD = $$("div", { //创建格式对象
  65. "className": "UD_WIMG UD_ICONz",
  66. "style": {
  67. "height": UDE.Height - 36 + "px"
  68. },
  69. "onmousedown": U.UF.EV.stopBubble
  70. }, _UDOD);
  71. _UDED = $$("div", { //创建格式对象
  72. "id": UDE.ContainerId + "Content",
  73. "className": "UD_W_WC",
  74. "style": {
  75. "cssText": "height:100%;" + UDE.CStyle
  76. }
  77. }, _UDCD);
  78. if (UDE.Embed == 0) { //添加内容区域
  79. $$("iframe", {//设定内容初始值
  80. "id": UDE.ContentId,
  81. "name": UDE.ContentId,
  82. "frameBorder": 0,
  83. "scrolling": UDE.hasScroll,
  84. "src": UDE.Content,
  85. "width": "100%",
  86. "height": "100%"
  87. }, _UDED);
  88. } else {
  89. U.selectEl(_UDED).append(UDE.Content);
  90. }
  91. //事件区域
  92. _UAE = {
  93. "with": [{ //事件区域高度
  94. "Element": _UDCD,
  95. "height": -36
  96. }, { //事件区域宽度
  97. "Element": _UDTD,
  98. "height": 0,
  99. "width": -30
  100. }]
  101. }
  102. if (UDE.hasDraw) {
  103. for (i = 0; i < _UCE.length; i++) {
  104. $$("span", {
  105. "className": "UD_W_WT_" + _UCE[i][0],
  106. "onmousedown": [
  107. [U.UF.F.RCDG, [_UDOD, _UCE[i][1], _UAE]]
  108. ]//鼠标按中时发生事件,改变窗体。
  109. }, _UDOD);
  110. }
  111. } //允许拉伸
  112. (UDE.hasMax) && ($$("span", { //最大化拉伸
  113. "title": "最大化",
  114. "className": "UD_ICON UD_W_TB_WM_Max",
  115. "onmousedown": U.UF.EV.stopBubble,
  116. "onclick": [
  117. [U.UF.F.windowZooming, [_UDOD, this, _UAE, _UDTD, {
  118. "onmousedown": _UDTD.onmousedown
  119. }]]
  120. ]
  121. }, _UDSD));
  122. (UDE.hasMin) && ($$("span", { //最小化拉伸
  123. "title": "最小化",
  124. "className": "UD_ICON UD_W_TB_WM_Min",
  125. "onmousedown": U.UF.EV.stopBubble,
  126. "onclick": [
  127. [U.UF.F.windowMinimize, [_UDOD]]
  128. ]
  129. }, _UDSD));
  130. _UDTD.onmousedown = (UDE.Width == US.width && UDE.Height == US.height) ? U.UF.C.apply(this[[U.UF.F.DragElement, [_UDOD, null, _UAE, _UDTD, {
  131. "onmousedown": _UDTD.onmousedown
  132. }])]] : _UDTD.onmousedown;
  133. (UDPD) && (UDPD.appendChild(_UDOD));
  134. U.UF.SI[UDE.Left || UDE.Top ? "SetDTop" : "PopupWindow"](_UDOD);
  135. return _UDOD; //添加
  136. }
  137. /**
  138. * 创建1473窗体
  139. * UDPD 父亲元素
  140. * {int} UDOD主体元素, UTE标题, UDID id, UST表示内容 ,UCS css样式 UW, UH长。
  141. **/
  142. U.UF.UI.SUForms = function (UDOD, UTE, UDID, UST, UCS, UW, UH) {
  143. var _UDW = US.width,
  144. _UDH = US.height;
  145. return U.UF.UI.UForms({ //返回属性
  146. "Embed": 1,
  147. "Top": (_UDH - UH - 50) / 2,
  148. "Left": (_UDW - UW) / 2,
  149. "Width": UW,
  150. "Height": UH,
  151. "ContainerId": UDID,
  152. "titleName": UTE,
  153. "ContentId": "",
  154. "Content": UST,
  155. "hasScroll": "no",
  156. "hasMax": false,
  157. "hasMin": false,
  158. "hasDraw": false,
  159. "CStyle": UCS,
  160. "IsR": true
  161. }, UDOD);
  162. }
  163. // getStartE: function () {
  164. // if (window.getSelection) { //Html5
  165. // return this.R.startContainer;
  166. // }
  167. // else {
  168. // var _UDOD = this.Parent();
  169. // }
  170. // },
  171. // getEndE: function () {
  172. // if (window.getSelection) {
  173. // return this.R.endContainer;
  174. // } //Html5
  175. // else {
  176. // var _UDOD = this.Parent();
  177. // }
  178. // },
  179. // selectAll: function () { },
  180. //富文本编辑器
  181. U.UF.E.RuchEditor = function (UDE) {
  182. U.UF.UI.Editor((U.UF.C.isFunction(UDE) || !UDE) ? { head: true, style: { width: "600px", height: "500px" }, title: false, name: "在线编辑", fcb: UDE} : UDE);
  183. }
  184. //上传文件成功显示到制定的区域
  185. U.UF.E.AddUPWJ = function (UTE, UDBD) {
  186. var _UDOD, _UDTD, _UDSD, _UIID = Guid.newGuid().replace(/-/g, ""),
  187. _UME = U.UF.UP.XWPGYS(UTE["type"]);
  188. if (_UME[2]) { //普通文件上传显示
  189. _UDOD = $$("div", { "contentEditable": "false", "className": "UD_UPO", "onclick": [[]] });
  190. _UDTD = $$("div", { "contentEditable": "false", "className": "UD_UPOL" }, _UDOD);
  191. $$("div", { "contentEditable": "false", "className": "UD_SYVCOI UD_SYID " + _UME[0] }, _UDTD);
  192. _UDSD = $$("div", { "contentEditable": "false", "className": "UD_UPOR" }, _UDTD);
  193. $$("div", { "contentEditable": "false", "innerHTML": UTE["name"], "className": "UD_UPORN" }, _UDSD);
  194. $$("div", { "contentEditable": "false", "innerHTML": "下载", "className": "UD_UPORX" }, _UDSD);
  195. $$("div", { "contentEditable": "false", "innerHTML": "保存到网盘", "className": "UD_UPORB" }, _UDSD);
  196. if (UIMG) { _UDTD = UDBD.parentNode; _UDTD.replaceChild(_UDOD, UDBD); }
  197. }
  198. else { //图片区域
  199. if (UDBD) {
  200. U.UF.IMG.imgReady(U.MD.C.getHeadImage(US.FILESYSTEMURL + UTE["URL"]), null, function(){U.UF.E.ImgOnLoad(UDBD]]]), U.UF.C.apply(null, [[U.UF.E.ImgOnLoad, [);});
  201. } //加载原图
  202. else {
  203. var _UIID = Guid.newGuid().replace(/-/g, ""); _UDOD = $$("img", { "id": _UIID, "src": "/img/imgloading.gif", "onmousedown": "return false", "onselectstart": "return false", "ondragstart": "return false", "style": { "cssText": "max-width:100%;width:auto;height:auto;"} });
  204. } //正在上传等待
  205. }
  206. }
  207. //上传图片预加载成功或者失败
  208. U.UF.E.ImgOnLoad = function (UIID) {
  209. if (UIID) {
  210. U.selectEl(UIID).addAttrArray({ "onload": "if (U.MD.F) { U.MD.F.H.SUIMG(retElement); }", "src": this.src, "width": this.width, "height": this.height });
  211. }
  212. else {
  213. U.MD.C.imgError(this, 2);
  214. }
  215. }
  216. /**
  217. * 创建群组
  218. *
  219. * @param {object} 群信息
  220. */
  221. U.MD.F.J.APPGroup = function (UDE) {
  222. // U.MD.F.J.GroupInfoForm(UDE, null);
  223. // var _UTE,
  224. // _UDFD = $$("div", {}, U.selectEl("#UD_SY")[0]),
  225. // _UDMD = U.MD.F.J.GroupInfoForm(UDE, null, _UDFD), //插入添加创建群信息
  226. // _UDTD = U.MD.F.J.SelectFriendForm($("#UD_SYTC")[0], null, _UDFD); //插入添加好友的信息
  227. // //设置样式处理
  228. // $[_UDMD.form, _UDTD.form].addAttrArray({ onmousedown: null, "className": "UD_SYF_S", "style": { "border": "0", "position": "relative", "float": "left", "top": "0", "left": "0"} });
  229. // _UDMD.head.onmousedown = _UDTD.head.onmousedown = null;
  230. // _UDMD.form.style.borderRight = "1px solid #444";
  231. // //弹出添加群的框
  232. // _UTE = new U.UF.UI.form({ id: "U_F_CONET", isContain: false, content: _UDFD, bst: { "style": { "overflow": "hidden"} },
  233. // "style": { "width": "736px", "height": "485px", "backgroundColor": "transparent", "overflow": "hidden" },
  234. // title: false, draw: false, max: false, close: false, min: false
  235. // });
  236. // _UDMD.cl.onclick = _UDTD.cl.onclick = U.UF.C.apply(_UTE, [[_UTE.shut]]); //关闭按钮处理
  237. }
  238. /**
  239. * word编辑处理 不使用
  240. *
  241. */
  242. U.MD.O.Del = function (UTE) {
  243. // var i, j, k, _UTF, _UDMD, _UKE = [], _UVE = [], _UCE = ["nodeValue", "innerHTML"], _UAE = ["width", "height", "minHeight", "minWidth"], _UDOD = $$("div", { "innerHTML": UTE.GetSelectedHtml() }), _UDCD = U.selectEl(_UDOD).Nodes(), _UIE = UTE.GetGBWZ(), _UDPD = UTE.Parent(), _UDAD = U.selectEl(_UDPD).Nodes(), _UTH = (_UDPD.nodeValue == null ? _UDPD.innerText : _UDPD.nodeValue).replace(/\s|\n/g, "");
  244. // if ($(_UDOD).Child().length) {
  245. // if (_UDPD.nodeType != 3 && UTE.isE(_UDPD)) { _UVE.push(_UDPD); } for (i = 0; i < _UDAD.length; i++) { if (_UDAD[i].nodeType != 3 && UTE.isE(_UDAD[i])) { _UVE.push(_UDAD[i]); }; }
  246. // for (k = 0; k < Math.min(_UVE.length, 2); k++) {
  247. // _UDMD = _UVE; j = k ? _UDMD.length - 1 : 0;
  248. // do { if (UTE.isE(_UDMD[j])) { _UDCD = _UDMD[j]; _UDMD = U.selectEl(_UDCD).Nodes(); j = j = k ? _UDMD.length : -1; } } while ((k ? ((j -= 1) > -1) : ((j += 1) < _UDMD.length)));
  249. // if (_UDCD) { for (i = 0; i < _UCE.length; i++) { if (_UDCD[_UCE[i]] != null) { _UDCD[_UCE[i]] = _UDCD[_UCE[i]].substring.apply(_UDCD[_UCE[i]], k ? [(UTE.GetGBWZ(_UDCD, !k))] : [0, (UTE.GetGBWZ(_UDCD, !k))]); break; } } _UKE.push(_UDCD); }
  250. // }
  251. // for (i = 0; i < _UVE.length; i++) {
  252. // _UDCD = U.selectEl("*", _UVE[i]);
  253. // if (_UDCD.length) {
  254. // for (j = 0; j < _UDCD.length; j++) {
  255. // // for (k = 0; k < _UAE.length; k++) { if ((_UTF = _UDCD[j].style[_UAE[k]]) && _UTF != "auto") { break; } }
  256. // if ((k != _UAE.length || (_UDCD[j].className || _UDCD[j].id))) {
  257. // if (!$(_UDCD[j]).Child().length) {
  258. // for (k = 0; k < _UCE.length; k++) {
  259. // if (_UDCD[j][_UCE[k]] != null && (!_UKE[0] || !U.UF.EL.isChild(_UDCD[j], _UKE[0])) && (!_UKE[1] || !U.UF.EL.isChild(_UDCD[j], _UKE[1]))) { _UDCD[j][_UCE[k]] = ""; break; }
  260. // }
  261. // }
  262. // }
  263. // else if (_UDCD[j] != _UKE[0] && _UDCD[j] != _UKE[1] && !_UDCD[j].innerHTML) { U.selectEl(_UDCD[j]).remove(); }
  264. // }
  265. // }
  266. // else { for (i = 0; i < _UKE.length; i++) { if (!U.UF.EL.isChild(_UVE[i], _UKE[i])) { if (_UVE[i].className || _UVE[i].id) { U.selectEl(_UVE[i]).remove(); } else { _UVE[i].innerTEXT = ""; } break; } } }
  267. // }
  268. // UTE.R.collapse(false); return _UKE;
  269. // }
  270. }
  271. U.MD.O.OLWordUP = function (UTF, UDE, UTE, UT, UWE) {
  272. // var i, _USE, _UCE = ["nodeValue", "innerHTML"], _UIE = UTE.GetGBWZ(), _UDPD = UTE.Parent(), _UTH = (_UDPD.nodeValue == null ? _UDPD.innerText : _UDPD.nodeValue).replace(/\s|\n/g, "");
  273. // if (!U.UF.C.isString(UTF) && (!UT[1] && !UT[2] && !UT[3])) {
  274. // if (((UT[0] > 47 && UT[0] < 112) || (UT[0] > 185 && UT[0] < 193) || (UT[0] > 218 && UT[0] < 223))) {
  275. // if ((_USE = U.MD.O.Del(UTE)) && _USE[0]) { UTE.QX(-1, -1, _USE[0]); }
  276. // }
  277. // }
  278. // else {
  279. // switch (UTF) {
  280. // case "del": case "Backspace":
  281. // if ((_USE = U.MD.O.Del(UTE)) && _USE[0]) { return 1; }
  282. // else if (_UDPD.className) { if ((!_UIE && UTF == "Backspace") || (_UIE == _UTH.length && UTF == "del")) { return 1; } else if (_UTH.length == 1 && _UTH != "") { _UDPD.innerText = ""; return 1; } else if (!_UTH.length) { return 1; } }
  283. // break;
  284. // case "Enter":
  285. // if (_UDPD.nodeType != 3) {
  286. // if (("DIV,SPAN,P".indexOf(_UDPD.tagName) == -1 && _UDPD.className.indexOf("return_key") > -1)) { return 1; }
  287. // else if (_UDPD.style.cssText) { UTE.Replace("<div>&#8203</div>"); return 1; }
  288. // }
  289. // break;
  290. // case "save":
  291. // (UWE.U.MD.O.W || UWE.U.MD.O.E).Save(); return 1;
  292. // break;
  293. // }
  294. // }
  295. }
  296. //#region 初始化首页
  297. ///**
  298. //* 初始化首页
  299. //*
  300. //* @param {object} 任务栏数据
  301. //*/
  302. //U.MD.D.H.SYTJ = function (UDE) {
  303. // if (UDE) { //打印推荐用户
  304. // U.MD.D.H.PSYTJN($("#UD_SYSXSSXOC")[0], UDE);
  305. // }
  306. // else {
  307. // U.A.Request(US.CD, [US.DB, "UseStudio_Friends", "RecommendFriends", US.userInfo.userid || US.EMPTYGUID, 0, 11]), U.MD.D.H.AsynSYTJ, [""];
  308. // }
  309. //}
  310. ///**
  311. //* 首页推荐数据异步推荐
  312. //*
  313. //* @param {object} 任务栏数据
  314. //*/
  315. //U.MD.D.H.AsynSYTJ = function (r) {
  316. // U.MD.D.H.ET["TJ"] = r = r.value;
  317. // U.MD.D.H.SYTJ(r);
  318. //}
  319. ///**
  320. //* 打印首页推荐好友New
  321. //*
  322. //* @param {object} 任务栏数据
  323. //*/
  324. //U.MD.D.H.PSYTJN = function (UDOD, UDE, UTF, UP) {
  325. // var i, _UDSD = $$("frag"); UDOD.innerText = "";
  326. // for (i = 0; i < UDE.length; i++) {
  327. // $$("img", { "onerror": U.MD.C.imgError, "title": UDE[i].UserName, "alt": UDE[i].UserName, "onclick": function(){U.MD.U.V.ViewOtherUserInfo(UDE[i].UserID);}, "src": U.MD.C.getHeadImage(UDE[i].UserThumbnailImageHead) }, _UDSD);
  328. // }
  329. // (UTF) && ($$("div", { "className": "UD_SYSXLTTI UD_SYSXLTTIO U_Boom_Img_ys2017", "title": "点击刷新", "onclick": function(){U.MD.D.H.SXZX(UP || 2, this, 28, function(){U.MD.D.H.PSYTJNSX(UTF);});} }, _UDSD)); UDOD.appendChild(_UDSD);
  330. //}
  331. //#endregion
  332. /*
  333. Form窗体的使用
  334. 1、可以像java语言的用法,用new调用多份,例如: var a=new new U.UF.UI.form();
  335. 2、也可以省略new的步骤,直接U.Alert(),出来的结果为多份。
  336. 3、多窗口模式调用方法,var e= U.UF.UI.form (UDE); e.addExtendForm();
  337. 参数一:_UFE[add "name":"add"]
  338. 参数二:_UTT 存放大小变化的值
  339. 返回值:
  340. */
  341. /**
  342. * 可以像java语言的用法,用new调用多份,例如: var a=new new U.UF.UI.form();
  343. *
  344. * @param {object} 窗体使用传参
  345. ----------min 是否允许最小化
  346. ----------max 是否允许最大化
  347. ----------id 窗体id
  348. ----------style 窗体的样式
  349. ----------content 窗体的内容
  350. ----------title 窗体的标题
  351. ----------hst 标题设置
  352. ----------cst 内容设置
  353. ---------__top__ 是否允许点击置顶
  354. * @return {object} 窗体实体
  355. */
  356. U.UF.UI.form = U.UF.UI.form = function (UDE) {
  357. return new new U.UF.UI.form.init(UDE).create();
  358. }
  359. /**
  360. * 可以像java语言的用法,用new调用多份,例如: var a=new new U.UF.UI.form();
  361. *
  362. * @param {object} 窗体使用传参
  363. ----------min 是否允许最小化
  364. ----------max 是否允许最大化
  365. ----------id 窗体id
  366. ----------style 窗体的样式
  367. ----------content 窗体的内容
  368. ----------title 窗体的标题
  369. ----------hst 标题设置
  370. ----------bst 内容设置
  371. ----------draw 是否允许拉伸
  372. * @return {object} 窗体本身
  373. */
  374. new U.UF.UI.form.init = function (UDE) { //初始化
  375. U.UF.C.AddObj(this, UDE);
  376. return this;
  377. }
  378. new U.UF.UI.form.et = {}; //所有窗体集合
  379. //窗体使用函数
  380. new U.UF.UI.form.init.prototype = {
  381. et: new U.UF.UI.form.et, //所有窗体集合
  382. //构建元素
  383. create: function () {
  384. var i, _USE, _UDOD, _UDTD, _UDSD, _UAE, _UTE = this,
  385. _UTI = this.title, //标题元素
  386. _UCT = this.content, //内容元素
  387. _UCE = [
  388. ["H", "up"],
  389. ["HL", "topRight"],
  390. ["HR", "topleft"],
  391. ["ML", "left"],
  392. ["MR", "right"],
  393. ["B", "down"],
  394. ["BL", "bottomLeft"],
  395. ["BR", "bottomRight"]
  396. ];
  397. if (this.id && this.et[this.id] && this.et[this.id].form.id == this.id) { //无需创建
  398. _UTE = this.et[this.id]; //获取当前窗体属性
  399. _UTE.form.style.cssText = "";
  400. (_UTE.body) && (_UTE.body.style.cssText = "");
  401. U.selectEl(_UTE.form).addAttrArray({
  402. className: this.className ? this.className : "UD_SYF_S UD_SYKO", //css样式名"UD_SYF_S UD_SYKO"
  403. close: U.UF.C.apply(_UTE, _UTE.shut),
  404. "__top__": this.top ? "false" : "", //是否允许点击置顶
  405. "__right__": this.right || "",
  406. usform: "true", //设置窗体属性
  407. "id": this.id || "", //绑定继承ID
  408. "style": this.style || {}
  409. });
  410. ($(_UTE.body).addAttrArray(this.bst));
  411. (_UTI && (_UTE.title = _UTI)) && (U.UF.C.isString(_UTI) ? (_UTE.head.innerHTML = _UTI) : (_UTE.head.innerHTML = "", U.selectEl(_UTE.head).append(_UTI))); //重新设置标题
  412. (_UCT && (_UTE.content = _UCT)) && (U.UF.C.isString(_UCT) ? ((U.UF.C.isUrl(_UCT)) ? "" : _UTE.body.innerHTML = _UCT) : (($(_UCT).Parent() != _UTE.body) && (_UTE.body.innerText = "", U.selectEl(_UTE.body).append(_UCT)))); //内容设置
  413. _UDOD = _UTE.form;
  414. }
  415. else { //创建窗体
  416. (this.form = _UDOD = $$("div", { //创建元素
  417. className: this.className ? this.className : "UD_SYF_S UD_SYKO", //css样式名"UD_SYF_S UD_SYKO"
  418. close: function(){this.shut();},
  419. "__top__": this.top ? "false" : "", //是否允许点击置顶
  420. "__right__": this.right || "",
  421. usform: "true", //设置窗体属性
  422. "id": this.id || "", //绑定继承ID
  423. "style": this.style || {}
  424. })).onresize = U.UF.C.apply(this, [[this.size]]); //设置元素变化事件
  425. (this.attr) && ($(this.form).addAttrArray(this.attr));
  426. if (this.title !== false) {
  427. this.head = _UDTD = $$("div", {
  428. className: "UD_SYF_ST",
  429. onmousedown: function(){U.UF.F.DragMouseDown(_UDOD, null, this);} //窗体拖动//鼠标事件按下发生
  430. }, _UDOD);
  431. //重载hst为headerStyle,更加语义化.
  432. (this.headerStyle) && ($(_UDTD).addAttrArray(this.headerStyle));
  433. (this.hst) && ($(_UDTD).addAttrArray(this.hst)); //给标题头部添加样式
  434. (_UTI != null) && ($(_UDTD).append(_UTI)); //添加头部
  435. } else if (this.draw !== false) {
  436. _UDOD.onmousedown = function(){U.UF.F.DragMouseDown(_UDOD);}; //窗体拖动
  437. }
  438. if (this.content !== false) {//判断元素是否有bst,添加
  439. _UDTD = $$("div", {
  440. className: "UD_SYF_SC"
  441. }, _UDOD);
  442. this.body = _UDTD = $$("div", {
  443. usbody: "true",
  444. className: "UD_SYF_SCO"
  445. }, _UDTD);
  446. (this.bst) && ($(this.body).addAttrArray(this.bst));
  447. U.selectEl(_UDTD).bind("scroll", function(){this.scroll();}); //避免闭包耗费资源。
  448. //iframe的处理方式
  449. if (_UCT != null) {
  450. if (U.UF.C.isUrl(_UCT)) {
  451. $$("iframe", {
  452. scrolling: this.Scroll || "no",
  453. frameBorder: 0,
  454. width: "100%",
  455. height: "100%",
  456. src: _UCT
  457. }, _UDTD);
  458. } else if (_UCT) {
  459. (this.bst) && ($(_UDTD).addAttrArray(this.bst));
  460. if (U.UF.C.isString()) {//添加内容
  461. _UDTD.innerHTML = _UCT;
  462. }
  463. else {
  464. U.selectEl(_UDTD).append(_UCT); //添加所选元素
  465. }
  466. }
  467. }
  468. }
  469. this.zie = _UAE = {//添加属性size
  470. fun: function(){this.size();}
  471. };
  472. _UDTD = $$("div", {//创建_UDTD添加到_UDOD
  473. className: "UD_W_WT"//添加CLASS属性
  474. }, _UDOD);
  475. if (this.draw !== false) {
  476. for (i = 0; i < _UCE.length; i++) {
  477. $$("div", {
  478. className: "UD_W_WT_" + _UCE[i][0],
  479. onmousedown: [//鼠标事件
  480. [U.UF.F.RCDG, [_UDOD, _UCE[i][1], _UAE]]
  481. ]
  482. }, _UDTD);
  483. }
  484. } //允许拉伸
  485. U.selectEl(this.SO ? (this.SO[0] || this.SO) : ($("#UD_SY")[0] || document.body)).append(this.form, 0, this.SO ? this.SO[1] : null);
  486. _USE = this.head ? U.UF.EL.getElementInfo(this.head) : null;
  487. _UDSD = $$("div", {
  488. className: "UD_SYF_SCA",
  489. style: {
  490. "lineHight": _USE ? _USE.CH + "px" : "",
  491. "top": _USE ? Math.ceil((_USE.OH - 20) / 2) + "px" : "15px" //定义高度属性为(_USE.OH - 20) / 2
  492. }
  493. }, _UDOD); //添加至_UDOD
  494. //功能将处理
  495. (this.htask) && ($(_UDSD).addAttrArray(this.htask));
  496. (this.close !== false) && (this.close = this.close || {}, this.cl = $$("div", {
  497. className: "UD_SYF_SS U_Boom_Img_ys2017",
  498. title: "点击关闭",
  499. onmousedown: U.UF.EV.stopBubble,
  500. onclick: function(){this.shut();}
  501. }, _UDSD));
  502. _USE = this.et[this.id] = this;
  503. //最大化最小化的按钮
  504. (this.max !== false) && (this.max = this.max || {}, this.m = _UDTD = $$("div", {
  505. className: "UD_SYF_SD U_Boom_Img_ys2017",
  506. title: "最大化",
  507. onmousedown: U.UF.EV.stopBubble
  508. }, _UDSD), _UDTD.onclick = U.UF.C.apply(null, [
  509. [U.UF.F.windowZooming, ([_UDOD, _UDTD, {
  510. fun: U.UF.C.apply(this, [
  511. [this.size]
  512. ])
  513. }, this.head || _UDOD, {
  514. "onmousedown": (this.head || _UDOD).onmousedown
  515. }])]
  516. ]), (this.head) && (this.head.ondblclick = U.UF.C.apply(this.head, function () {
  517. (event.srcElement == this || U.UF.EL.isChild(this, event.srcElement)) && (_UDTD.onclick());
  518. }))); //
  519. (this.min !== false) && (this.min = this.min || {}, this.mi = $$("div", {
  520. className: "UD_SYF_SF U_Boom_Img_ys2017",
  521. title: "最小化",
  522. onmousedown: U.UF.EV.stopBubble,
  523. onclick: [
  524. [U.UF.F.windowMinimize, [_UDOD]]
  525. ]
  526. }, _UDSD));
  527. }
  528. //不允许拖动设置
  529. (_UTE.isContain) && (((_UTE.head) && (_UTE.head.onmousedown = null)) || (_UDOD.onmousedown = null)); //$(_UDOD).css({ position: "static" }),
  530. _UAE = _UTE.style ? [_UTE.style.top, _UTE.style.left] : [];
  531. //弹出窗体
  532. (!this.style || this.style.display != "none") && (U.UF.SI[_UAE[0] && (_UAE[0].indexOf("px") > -1 || _UAE[0].indexOf("%") > -1) || _UAE[1] && (_UAE[1].indexOf("px") > -1 || _UAE[1].indexOf("%") > -1) ? "SetDTop" : "PopupWindow"](_UDOD, true));
  533. _UTE.form = _UDOD;
  534. //设置置顶
  535. (_UTE.top) && ($(_UTE.form).css("zIndex", 9999));
  536. _UTE.size(true);
  537. return _UTE;
  538. },
  539. //关闭窗体
  540. shut: function () {
  541. if (!this.close || !this.close.onclick || this.close.onclick(this.form) !== false) {
  542. U.UF.F.closeWindow(this.form, this.del ? this.del : null); //关闭窗体
  543. }
  544. },
  545. /**
  546. * 变大缩小适应
  547. *
  548. * @param {object} 窗体使用传参
  549. */
  550. size: function (UTF) {
  551. if (this.draw !== false && this.max !== false || this.title !== false) {
  552. if (!(this.bst && this.bst.height) && this.form.style.height != "auto") { //判断是否为自适应
  553. var _UH,
  554. _USE = [this.head ? U.UF.EL.getElementInfo(this.head) : [], U.UF.EL.getElementInfo(this.body)] //获取padding大小
  555. //|| (US.height * 0.7); //等比例百分比
  556. if (_UH = U.selectEl(this.form).height()) { U.selectEl(this.body).css("height", _UH - (_USE[0]["OH"] || 0) - (_USE[1]["PD"][0] || 0) - (_USE[1]["PD"][2] || 0) + "px"); } //大小设置
  557. }
  558. if (UTF !== true) { //利用回调函数调用
  559. (!this.TI && this.resize) && (this.resize.call(this, this.form, this.head, this.body)); //回调窗体变化
  560. clearTimeout(this.TI);
  561. this.IsSize = true;
  562. this.TI = setTimeout(function(){this.sizeend();}, 0); //窗体结束调用
  563. }
  564. }
  565. },
  566. //大小变化结束出发
  567. sizeend: function () {
  568. this.TI = null;
  569. (this.resizeend) && (this.resizeend(this.form));
  570. },
  571. //窗体变化
  572. allSize: function () {
  573. var i, _UDE = this.et;
  574. for (i in _UDE) {
  575. if (_UDE[i].IsSize) {
  576. _UDE[i].IsSize = false;
  577. } else {
  578. _UDE[i].size();
  579. }
  580. }
  581. },
  582. //滚动使用
  583. scroll: function () {
  584. if (this.s || this.ss || this.se) {
  585. (this.s) && (this.s());
  586. (!this.iss) && (this.scrollStart());
  587. this.iss = true; //滚动开始触发
  588. clearTimeout(this.TI);
  589. this.TI = setTimeout(function(){this.scrollEnd();}, 0); //触发加载
  590. }
  591. },
  592. //滚动开始
  593. scrollStart: function () {
  594. (this.ss) && (this.ss()); //滚动开始回调
  595. },
  596. //滚动结束
  597. scrollEnd: function () {
  598. (this.se) && (this.se()); //滚动结束回调
  599. this.iss = false;
  600. },
  601. //滚动到底部触发
  602. scrollBottom: function () {
  603. },
  604. //添加属性
  605. add: function (UDE) {
  606. U.UF.C.AddObj(this, UDE);
  607. }
  608. }
  609. /**
  610. * onload成功进入
  611. * @param {element} 加载的元素
  612. * @param {function} 回调函数
  613. */
  614. //U.UF.DL.iframeLoad.AILD = function (UDOD, cb) {
  615. // var _URS = UDOD.readyState;
  616. // (_URS == "complete" || _URS == "loaded" || _URS == null) && (UDOD.complete = "complete", UDOD.onreadystatechange = null, (U.UF.C.isFunction(cb) ? cb.call(UDOD) : function(){cb();}()), UDOD.complete = null);
  617. //}
  618. ////判断文件是否存在
  619. //U.UF.DL.ISWJCZ = function () {
  620. // $.ajax(UURL, "", cb, "", { "type": "get" });
  621. //}
  622. /**
  623. 设置元素loading
  624. 问题:
  625. ----添加一个参数,允许往loading中传递元素。
  626. ----在第一个loading数据量大未出数据的时候,点第二个loading,第二个先获取到数据,会否第二个会先出效果。
  627. ----由于第一次点击数据量大,后台是否能够第二个数据先出。
  628. ----由于第一次点击数据量大,前台loading的效果是否支持第二以及后续点击先出。
  629. *
  630. * @param {element} 元素
  631. * @param {boolean} loading类型
  632. ------------true 、 false 两种loading
  633. */
  634. /*U.UF.DL.loading = function (UDOD, UTF) {
  635. if (UDOD) {
  636. var i, _UAE, _UDTD, _UDPD = U.selectEl(UDOD).Parent(),
  637. _UDSD = UDOD ? UDOD.__ULOADElement__ : null, //该元素的loading元素
  638. _USE = { width: "", height: "", overflow: "", padding: "", borderWidth: "", minHeight: "", minWidth: "", cssText: "" }; //loading设置样式区域
  639. if (_UDSD) {//loading存在添加计数
  640. if (UDOD != _UDSD) { _UDSD.P++; }
  641. }
  642. else { //无loading 需要loading的情况
  643. _UDSD = UDOD.__ULOADElement__ = $$("div", { "P": 0, "className": UDOD.className, //这个为loading元素
  644. "style": { "cssText": UDOD.style.cssText + ";" + ($(UDOD).css("display") == "none" ? "display:block" : "") },
  645. "onresize": function(){U.UF.DL.loading.Donresize(this);}
  646. });
  647. if (UTF === true) {//loading样式1
  648. $$("div", { "style": { "cssText": "overflow:hidden;width:40px;height:20px;background:url('/img/Loading.gif') 0px 0px no-repeat;margin:auto"} }, _UDSD);
  649. }
  650. else { //loading样式2
  651. $$("div", { "style": { "cssText": "position:relative;width:" + (UTF && UTF.width ? UTF.width : "33px") + ";height:" + (UTF && UTF.height ? UTF.height : "33px") + ";background:url('" + (UTF && UTF.img ? UTF.img : "/img/UAL.gif") + "') 0px 0px no-repeat;margin:auto"} }, _UDSD);
  652. }
  653. try { _UDPD.insertBefore(_UDSD, UDOD); } //loading 添加到指定的位置
  654. catch (e) { }
  655. //loading样式设置
  656. U.UF.DL.loading.Donresize(_UDSD, UDOD, UTF);
  657. _UAE = UDOD.style;
  658. U.Json.Each(_USE,function (USV, UTP) { _USE[UTP] = _UAE[UTP]; });
  659. //原元素缩小
  660. (UDOD = U.selectEl(UDOD)).addAttrArray({ "__UCS__": _USE, "style": { "cssText": "width:0px;overflow:hidden;height:0px;padding:0;min-height:0px;min-width:0px;border-width:0px;"} });
  661. }
  662. return _UDSD;
  663. }
  664. }*/
  665. /**
  666. * css动画
  667. *
  668. * @return {array} 过渡属性的值
  669. -----------[0] 动画的css
  670. -----------[1] 动画的回调函数
  671. -----------[2] 兼容的前缀
  672. -----------[3] 浏览器过渡的监视属性
  673. -----------[4] 浏览器结束的属性
  674. */
  675. U.UF.C.CssAm = function () {
  676. var i, //遍历初始化
  677. _USE = $$("div").style; //获取div的样式
  678. //_UDE css动画属性名数组
  679. var _UDE = {
  680. "animation": ["animation", "animationEnd", "", "webkitRequest", "webkitCancel"],
  681. "OTransition": ["-o-transition", "oTransitionEnd", "-o-", "oRequest", "oCancel"],
  682. "MozTransition": ["-moz-transition", "transitionend", "-moz-", "mozRequest", "mozCancel"],
  683. "MsTransform": ["-ms-transition", "transitionend", "-ms-"],
  684. "transition": ["transition", "transitionend", "", "r", "cancel"]
  685. }
  686. for (i in _UDE) { //循环判断兼容
  687. if (_UDE.hasOwnProperty(i) && _USE[i] !== undefined) {
  688. _UDE[i].push(i);
  689. return _UDE[i];
  690. }
  691. }
  692. }
  693. ,
  694. Auxiliary: {
  695. an: function (UDE) { //缓存对象设置
  696. },
  697. slideToggle: function (UDE, UIE, UL, cb) { //下拉动画回调
  698. this[UIE].style.cssText = UDE; (UIE == UL - 1 && cb) && (cb());
  699. },
  700. animate: function (UDE, UAE, UIE) {//js动画调用使用区域
  701. var _UTF, _USE, i = UDE[0] || 0,
  702. _UL = UDE[1] || i + 1,
  703. _UTID = UDE[2],
  704. _UCB = UDE[3];
  705. for (; i < _UL; i++) {
  706. if (UIE) { _USE = U.UF.C.JsEM(this[i], UAE, UIE); }
  707. else { _USE = UAE; _UTF = true; } this.addAttrArray(_USE, i);
  708. }
  709. if (_UTF) {
  710. (_UTID == null && _UCB) && (_UCB()); return true;
  711. }
  712. },
  713. selectel: function (UTF, UDE) { //条件选择元素
  714. var _UFT, i = 0, _UL = UDE.length, _UCE = [], _UAE = U.select(), _UIE = UTF.match(U.UF.S.RNum);
  715. if (_UIE) { _UIE = _UIE[0].toInt(); switch (UTF.replace(_UIE + "", "")) { case ">": i = _UIE + 1; break; case "<": _UL = _UIE; break; default: i = _UIE; _UL = i + 1; break; } }
  716. for (; i < _UL; i++) { switch (UTF) { case "even": _UFT = !(i % 2); break; case "odd": _UFT = (i % 2) > 0; break; default: _UFT = true; break; } (_UFT) && (_UCE.push(UDE[i])); _UFT = false; }
  717. return _UAE.osadd(_UCE);
  718. }
  719. }
  720. /**
  721. * css动画异步
  722. *
  723. * @return {array} 过渡属性的值
  724. */
  725. U.UF.C.JsEM = function (UDOD, UDE, UHK, UTF) {
  726. var i, //遍历初始化
  727. j, //循环初始化
  728. _UCE, //储存字符串
  729. _USE = [], //初始化数组
  730. _UME = {}, //初始化对象
  731. _UM = /[^\d-|.]+/ig, //正则表达式
  732. _UNUM = /[\d-|.]+/ig; //正则表达式
  733. for (i in UDE) {
  734. if (UDE.hasOwnProperty(i)) {
  735. if (i == "style") {//style的制作
  736. _UCE = U.UF.C.jsonToStr(U.UF.C.JsEM(UDOD[i], UDE[i], UHK, true));
  737. (_UCE.length > 2) && (_UME[i] = { "cssText": _UCE.replace(/["|{|}]+/ig, "").replace(/,/ig, ";") });
  738. }
  739. else {//普通动画
  740. _USE[0] = UDOD[i] || 0; _USE[1] = UDE[i]; for (j = 0; j < _USE.length; j++) {
  741. (typeof _USE[j] != "number") && (_USE[j] = Number(_USE[j].replace(_UM, "")));
  742. } //生成位置
  743. if (!isNaN(_USE[0])) { //动画获取
  744. j = UTF ? U.UF.EL.styleConversion(i, true) : i;
  745. _UME[j] = _USE[0] + ((_USE[1] - _USE[0]) * UHK); _USE[1] = UDOD[i] ? UDOD : UDE;
  746. (typeof _USE[1][i] == "string") && (_UME[j] = _USE[1][i].replace(_UNUM, _UME[j]));
  747. }
  748. }
  749. }
  750. }
  751. return _UME;
  752. }
  753. /**
  754. * 动画初始化
  755. *
  756. * @param {object} 动画设置对象
  757. */
  758. U.UF.C.Animation = function (UDE) { //基础对象
  759. return new U.UF.C.Animation.init(UDE, U.UF.C.Animation.get());
  760. }
  761. U.UF.C.Animation.get = function () {
  762. var i, j, //循环变量
  763. _UFE,
  764. _UDE = [["r", "cancel"], ["", "moz", "webkit", "o"]]; //兼容
  765. //获取兼容字符串
  766. for (i = 0; i < _UDE[0].length; i++) {
  767. for (j = 0; j < _UDE[1].length; j++) {
  768. if (_UFE = window[_UDE[1][j] + (j ? _UDE[0][i].replace(/\b(\w)|\s(\w)/g, function (e) { //通过循环和获取 每次获取的时候利用首字母大写设置
  769. return e.toUpperCase();
  770. }) : _UDE[0][i]) + "AnimationFrame"]) { _UDE[0][i] = _UFE; break; };
  771. }
  772. }
  773. _UDE = _UDE[0];
  774. (typeof _UDE[0] == "string") && (_UDE[0] = _UDE[1] = null);
  775. return _UDE;
  776. }
  777. /**
  778. * 获取鼠标位置
  779. *
  780. * @param {object} 对象
  781. */
  782. U.UF.C.Animation.init = function (UDE, USE) {//动画初始化
  783. U.UF.C.AddObj(this, UDE); //添加动画对象
  784. this.type = USE || U.UF.C.Animation.get();
  785. this.sm = (USE && USE[0]) ? new Date() : Math.ceil(this.ti / 20); //动画开始的时间
  786. this.start(USE); //开始动画
  787. }
  788. //动画方法
  789. U.UF.C.Animation.init.prototype = {
  790. start: function (USE) {//这里开始了动画
  791. var _UFN = (USE || this.type)[0];
  792. this.tm = (_UFN ? _UFN(function(){this.time();}) : window.setInterval(function(){this.time(true);}, 20)); //动画使用开始
  793. },
  794. time: function (UTF) {//动画运行
  795. var _UTI, _UJT, _UST;
  796. if (UTF == true) { //普通计时器动画
  797. _UTI = 20 / this.ti;
  798. (this.ti <= 0) && (this.stop(), _UTI = null);
  799. this.cb(_UTI); this.ti -= 20;
  800. }
  801. else {//利用重绘动画使用
  802. _UTI = new Date(); //据偶去当前的时间
  803. _UJT = _UTI - this.sm;
  804. _UST = _UJT / this.ti;
  805. this.sm = _UTI; //时间的变化
  806. this.ti -= _UJT; //总时间的减少
  807. (this.ti <= 0) && (_UST = null, this.stop()); //调用停止函数
  808. (_UST !== 0) && (this.cb(_UST)); //结束的回调
  809. (_UST !== null) && (this.start()); //重复调用
  810. }
  811. },
  812. stop: function () {//动画结束
  813. (this.type[1] || window.clearInterval)(this.tm);
  814. }
  815. }
  816. /**
  817. * HTML模版页面 支持js内置 类似于js上的php ejs
  818. *
  819. * @param {element} 需要变化的元素
  820. * @param {object} 传参对象
  821. */
  822. U.UF.C.Simulation = function (UDOD, UDE) {
  823. new U.UF.C.Simulation.init(UDOD, UDE).exec();
  824. }
  825. /**
  826. * 初始化HTML模版页面 支持js内置 类似于js上的php ejs
  827. *
  828. * @param {element} 需要变化的元素
  829. * @param {object} 传参对象
  830. */
  831. U.UF.C.Simulation.init = function (UDOD, UDE) {
  832. this.el = UDOD; //
  833. U.UF.C.AddObj(this, UDE);
  834. return this;
  835. }
  836. U.UF.C.Simulation.init.prototype = {
  837. //正则配置
  838. config: { m: /^\\<{+([\s\S])+\\}>$/, // /\+=([\s\S])+?\+$/g
  839. zs: "+=", ze: "+", c: /\\/g,
  840. d: /(?=["])/g, s: "<{", e: "}>",
  841. f: "%",
  842. t: "([\\s\\S])*?"
  843. },
  844. //执行
  845. exec: function () {
  846. try {
  847. var i, _UCS = "",
  848. _UPE = [],
  849. _UT = this,
  850. _UKE = this.key,
  851. _UCE = this.config,
  852. _USE = (this.el.innerHTML || this.el).trim(" ").replace(_UCE.c, "\\\\").replace(_UCE.d, "\\").replace(this.getConfig("\\\\", "", "", "\\\\"),
  853. function (UST) { //配置输出查看
  854. return UST.replace("\\" + _UCE.s, _UCE.s.replaceHtmlSign()).replace("\\" + _UCE.e, _UCE.e.replaceHtmlSign());
  855. });
  856. //函数匹配区域
  857. _USE = _USE.replace(this.getConfig("", "", _UCE.f), function (UST) {
  858. return UST.replace(_UCE.s + _UCE.f, "\";").replace(_UCE.e, ";uhtml+=\"");
  859. });
  860. _USE = _USE.replace(this.getConfig(), function (UST) {
  861. return "\"+" + ((UST.replace(_UCE.s, "").replace(_UCE.e, "").replace(_UT.re("\\" + _UCE.zs + _UCE.t + "\\" + _UCE.ze),
  862. function (UST) {
  863. return UST.replace(_UCE.zs, "").replace(_UCE.ze, "").replaceHtmlSign();
  864. })) || "\"\"") + "+\"";
  865. }); //配置html输出区域
  866. _USE = 'var uhtml="' + _USE + '"; return uhtml;';
  867. //变量传参
  868. if (_UKE) {
  869. for (i in _UKE) {
  870. (_UKE.hasOwnProperty(i)) && (_UCS += (_UCS ? "," : "") + i, _UPE.push(_UKE[i]));
  871. }
  872. };
  873. _USE = Function(_UCS, _USE).apply(this.that || this, _UPE); //利用函数执行回调处理
  874. (this.cb) && (this.cb(_USE)); //获取模版回调
  875. }
  876. catch (e) { throw new Error(e); }
  877. },
  878. /**
  879. * 获取正则
  880. *
  881. * @param {string} 正则字符串
  882. */
  883. re: function (URE) {
  884. return new RegExp(URE, "g");
  885. },
  886. /**
  887. * 初始化HTML模版页面 支持js内置 类似于js上的php ejs
  888. *
  889. * @param {string} 正则开头
  890. * @param {string} 正则结束
  891. * @param {string} 正则中间的内容
  892. * @param {string} 正则结束的内容
  893. * @return {string} 正则内容
  894. */
  895. getConfig: function (US, UE, UOS, UOE) { //获取系统配置
  896. var _UCE = this.config;
  897. return this.re((US || "") + _UCE.s + (UOS || "") + _UCE.t + (UOE || "") + _UCE.e + (UE || ""));
  898. },
  899. getHtml: function () { //获取生成的html代码
  900. },
  901. /**
  902. * 正则对象
  903. *
  904. * @param {object} 正则设置
  905. */
  906. set: function (UDE) { //设置config
  907. var i, _UCE = this.config;
  908. for (i in _UCE) {
  909. (UDE.hasOwnProperty(i)) && (UDE[i] = _UCE[i]);
  910. }
  911. return this;
  912. }
  913. }
  914. //#region 处理了用户是否活动在当前页面的处理,当用户活动到当前页面的时候则五秒刷继续运行,当用户没有聚焦五秒刷取消
  915. ///**
  916. //*用户页面状态使用次数 统计页面计数 配合统一账号 同一浏览器多登问题
  917. //*本地存储方式进行存储数据 不污染cookie
  918. //*/
  919. //U.MD.D.record = function () {
  920. // //本地存储需要有一套完整的数据结构及方案。暂时放这里,没用到。
  921. // U.MD.D.LocalStorage = U.DW.local(); //初始化本地存储
  922. // U.MD.D.LocalStorage.set("user", { value: "" }); //设置用户访问值
  923. // U.MD.D.LocalStorage.remove("fm"); //清除前面记录
  924. // U.MD.D.LocalStorage.set("ati", Number(U.MD.D.LocalStorage.get("ati") || 0) + 1); //添加页面访问值
  925. //}
  926. ///**
  927. //* 页面聚焦使用
  928. //*/
  929. //U.MD.D.focus = function () {
  930. // U.MD.D.LocalStorage.off(); //取消页面消息通知
  931. // U.MD.C.T.onesetInterval(); //启动页面数据更新
  932. //}
  933. ///**
  934. //* 页面失去焦点使用
  935. //*/
  936. //U.MD.D.blur = function () {
  937. // U.MD.D.LocalStorage.on(U.MD.D.Asynblur); //重新检视页面
  938. // if (U.MD.D.LocalStorage.get("ati") > 0) {
  939. // U.MD.C.T.ClearInterval(); //清理页面数据获取
  940. // }
  941. //}
  942. ///**
  943. //* 这里为数据异步 使得各个页面 共享数据 一个浏览器允许多登 数据共享处理
  944. //*/
  945. //U.MD.D.Asynblur = function (errorobj) {
  946. // var _userid = US.userInfo.userid; //用户ID
  947. // var _value = U.UF.C.strToJson(errorobj["newValue"]); //获取页面值
  948. // if (U.MD.D.LocalStorage.get("ati") > 0) { //如果活动数大于0 停止这个页面活动
  949. // U.MD.C.T.ClearInterval();
  950. // }
  951. // else { //页面活动设置
  952. // U.MD.C.T.onesetInterval();
  953. // }
  954. // //数据共享分类处理
  955. // switch (errorobj.key) {
  956. // case "fm": //好友消息数据共享处理
  957. // if (_value.uid == _userid) {
  958. // U.MD.F.N.asynMessageService(_value, true);
  959. // }
  960. // break;
  961. // case "user": //用户数据
  962. // if ((_value.uid == _userid) && _value.value == "upline") {
  963. // U.MD.U.LO.emptyUserInfo();
  964. // }
  965. // break;
  966. // }
  967. //}
  968. //#endregion
  969. //#region 错误区域,需要在界面中显示,如何显示,先设计,后制作功能。然后重写一个函数,不需要类。
  970. //错误区域初始化
  971. U.A.Error = function () {
  972. return new U.A.Error.init();
  973. }
  974. //生成错误对象 错误对象的实例
  975. U.A.Error.init = function () {
  976. this.State = this.LogID = this.Value = this.Dt = this.Type = null;
  977. }
  978. U.A.Error.init.prototype = {
  979. /**
  980. * 判断对象是否为错误对象
  981. *
  982. * @return {object} json值
  983. */
  984. isError: function (UDE) {
  985. if (U.UF.C.isObject(UDE)) { //判断是否为对象
  986. for (var i in this) { if (this.hasOwnProperty(i) && !(i in UDE)) { return false; } }
  987. return true;
  988. }
  989. return false;
  990. },
  991. /**
  992. * 设置错误
  993. *
  994. * @return {object} 错误值
  995. */
  996. set: function (UDE) {
  997. U.UF.C.AddObj(this, UDE); //根据错误值添加错误
  998. return this;
  999. }
  1000. }
  1001. //#endregion
  1002. //#region ajax post请求
  1003. /**
  1004. * post请求
  1005. * @param {object} 传参
  1006. ----------[url] 请求的地址
  1007. ----------[parameter] 请求的参数
  1008. ----------[_context] 请求的回调参数
  1009. ----------[cb] 回调函数
  1010. * @return {object} post对象
  1011. */
  1012. U.A.Post = $.Post = function (UDE) {
  1013. var _UTE = new U.A.Post.init(UDE); //初始化对象
  1014. _UTE.send(); //发送请求
  1015. return _UTE;
  1016. }
  1017. /**
  1018. * 初始化post对象
  1019. *
  1020. */
  1021. U.A.Post.init = function (UDE) {
  1022. U.UF.C.AddObj(this, UDE);
  1023. }
  1024. U.A.Post.init.prototype = {
  1025. //发送请求
  1026. send: function () {
  1027. var i, _UDE = [],
  1028. _URL = this.url, //请求的地址
  1029. _UPE = this.parameter, //请求参数
  1030. _UCE = this.context; //请求传参
  1031. //添加参数
  1032. if (_UPE) {
  1033. for (i in _UPE) {
  1034. if (_UPE.hasOwnProperty(i)) {
  1035. _UDE.push($$("input", { "name": i, "value": _UPE[i] }));
  1036. }
  1037. }
  1038. }
  1039. //发送消息
  1040. U.UF.UP.inputUpload(_UDE, U.UF.C.apply(this, function () { this.success(); }), _UCE, _URL, null, "application/x-www-form-urlencoded");
  1041. },
  1042. /**
  1043. * psot请求成功回调
  1044. * @param {object} 数据
  1045. */
  1046. success: function (UDE) { //异步回调
  1047. (this.cb) && (this.cb(UDE));
  1048. }
  1049. }
  1050. //#endregion
  1051. /**
  1052. * 把json字符串转化成json
  1053. *
  1054. * @param {string} 需要判断的对象
  1055. * @return {object} 返回成功过生成后的对象 支持无线树
  1056. */
  1057. U.UF.C.strToJson = function (obj) {
  1058. //obj json字符串
  1059. var i; //循环初始化
  1060. if (U.UF.C.isString(obj)) {
  1061. obj = obj.parseJSON();
  1062. }
  1063. if (Array.isArray(obj)) { //设置数组
  1064. for (i = 0; i < obj.length; i++) {
  1065. if (U.UF.C.isString(obj[i])) {
  1066. obj[i] = obj[i].parseJSON();
  1067. }
  1068. if (Array.isArray(obj[i])) {
  1069. U.UF.C.strToJson(obj[i]);
  1070. }
  1071. }
  1072. }
  1073. return obj;
  1074. }
  1075. //暂时先屏蔽 网上很少使用
  1076. //outerText 最初是由 IE4.0 浏览器实现的私有属性,只有 Firefox 不支持该属性
  1077. //兼容outerText
  1078. // if (!!document.getBoxObjectFor || window.mozInnerScreenX != null) {//判断是否为firefox
  1079. // HTMLElement.prototype.__defineSetter__("outerText", function (str) {
  1080. // var parsedText = document.createTextNode(str); //创建文本节点
  1081. // this.parentNode.replaceChild(parsedText, this); //用创建的文本节点代替this
  1082. // return parsedText;
  1083. // });
  1084. // HTMLElement.prototype.__defineGetter__("outerText", function () {
  1085. // var r = this.ownerDocument.createRange(); //在这个元素的根元素创建一个(Range 对象)
  1086. // r.selectNodeContents(this); //设置该范围的边界点,使它包含指定节点的子孙节点,但不包含指定的节点本身;参数->其子节点将成为当前范围的内容的节点
  1087. // return r.toString(); //把一个逻辑值转换成字符串,并返回结果
  1088. // });
  1089. // }
  1090. //暂时先屏蔽
  1091. // if (!("componentFromPoint" in HTMLElement.prototype)) {//通过特定事件返回对象在指定坐标下的位置
  1092. // U.UF.EV.boundProperties(HTMLElement.prototype, "componentFromPoint", function () {//componentFromPoint("指定x的客户端窗口的坐标","指定y的客户端窗口的坐标")
  1093. // return function () {
  1094. // var _UE = U.UF.C.GetMousep();
  1095. // var _UDE = U.UF.EL.getElementInfo(this);
  1096. // if ((_UE["X"] > _UDE["CW"] + _UDE["TX"]) || (_UE["Y"] > _UDE["CH"] + _UDE["TY"])) {
  1097. // return "outside";
  1098. // }
  1099. // return "";
  1100. // }
  1101. // },
  1102. // function () { });
  1103. // }
  1104. //IE的script元素支持onreadystatechange事件,不支持onload事件.
  1105. //FF的script元素不支持onreadystatechange事件,只支持onload事件.
  1106. // if (!("onreadystatechange" in HTMLElement.prototype)) {//判断是否是firefox
  1107. // U.UF.EV.boundProperties(HTMLElement.prototype, "onreadystatechange", function () {
  1108. // return this.onload;
  1109. // },
  1110. // function (cb) {
  1111. // this.onload = cb;
  1112. // });
  1113. // }
  1114. // function loadJS(url, success) {
  1115. // var domScript = document.createElement('script');
  1116. // domScript.src = url;
  1117. // success = success || function () { };
  1118. // domScript.onload = domScript.onreadystatechange = function () {
  1119. // if (!this.readyState || 'loaded' === this.readyState || 'complete' === this.readyState) {
  1120. // success();
  1121. // this.onload = this.onreadystatechange = null;
  1122. // this.parentNode.removeChild(this);
  1123. // }
  1124. // }
  1125. // document.getElementsByTagName('head')[0].appendChild(domScript);
  1126. // }
  1127. // if (!("setCapture" in HTMLElement.prototype)) {//判断是否是firefox
  1128. // U.UF.EV.boundProperties(HTMLElement.prototype, "setCapture", function () {
  1129. // return function () { window.captureEvents(Event.MOUSEMOVE); } //firefox对于鼠标事件的捕捉
  1130. // },
  1131. // function () { }); }
  1132. //
  1133. // if (!("releaseCapture" in HTMLElement.prototype)) {//判断是否是firefox
  1134. // U.UF.EV.boundProperties(HTMLElement.prototype, "releaseCapture", function () {
  1135. // return function () {
  1136. // window.releaseEvents(Event.MOUSEMOVE);
  1137. // }
  1138. // },
  1139. // function () { });
  1140. // }
  1141. //setCapture和window.captureEvents(Event.MOUSEMOVE)的兼容
  1142. // if (!("event" in window.constructor.prototype)) {/*检测浏览器是否支持鼠标键盘事件*/
  1143. // U.UF.EV.boundProperties(window.constructor.prototype, "event", function () {
  1144. // var _UDE = arguments.callee; //arguments.callee ->指向参数arguments对象的函数
  1145. // while (_UDE.caller) {//一直往上寻找直到 寻找到顶层作用域 返回null 再往下执行
  1146. // _UDE = _UDE.caller;
  1147. // }
  1148. // return _UDE.arguments ? _UDE.arguments[0] : null; //arguments 是一个对应于传递给函数的参数的类数组对象。
  1149. // }, function () { });
  1150. // }
  1151. // if (!("srcElement" in window.Event.prototype)) {
  1152. // U.UF.EV.boundProperties(window.Event.prototype, "srcElement", function () {
  1153. // return event.target;
  1154. // },
  1155. // function () { });
  1156. // }
  1157. //srcElement 和 target 的兼容
  1158. // var theEvent = window.event || arguments.callee.caller.arguments[0]; //arguments.callee.caller.arguments[0]相当于firefox的获取event
  1159. // var srcElement = theEvent.srcElement; //捕获当前事件作用的对象
  1160. // if (!srcElement) {//Firefox不兼容srcElement
  1161. // srcElement = theEvent.target; //Firefox兼容target
  1162. // }
  1163. // if (!("keyCode" in window.Event.prototype)) {
  1164. // U.UF.EV.boundProperties(window.Event.prototype, "keyCode", function () {
  1165. // return event.which;
  1166. // },
  1167. // function () { });
  1168. // }
  1169. //keyCode - 兼容chrom和Firefox
  1170. // HTMLElement.prototype.__defineGetter__("onmousewheel", function () {
  1171. // return this.onwheel;
  1172. // });
  1173. // HTMLElement.prototype.__defineSetter__("onmousewheel", function (cb) {
  1174. // this.onwheel = cb;
  1175. // });
  1176. // if (!("onmousewheel" in HTMLElement)) {
  1177. // if ("onwheel" in HTMLElement.prototype) {
  1178. // U.UF.EV.boundProperties(HTMLElement.prototype, "onmousewheel", function () {
  1179. // return this.onwheel;
  1180. // },
  1181. // function (cb) {
  1182. // this.onwheel = cb;
  1183. // });
  1184. // }
  1185. // else {
  1186. // //firefox支持onmousewheel
  1187. // if (browser.firefox) {
  1188. // (function () {
  1189. // window.addEventListener("DOMMouseScroll", function (UE) {
  1190. // //监控Scroll事件
  1191. // var _UOE = null
  1192. // , _UDOD = UE.srcElement;
  1193. // do {
  1194. // _UOE = U.selectEl(_UDOD).attr("onmousewheel") || _UDOD.onmousewheel;
  1195. // _UDOD = U.selectEl(_UDOD).Parent();
  1196. // } while (!(_UOE || !_UDOD)); //冒泡的顶部获取
  1197. // if (_UOE) {
  1198. // (typeof _UOE == "string") && (_UDOD.onmousewheel = new Function(_UOE));
  1199. // U.M.StopDefault();
  1200. // //阻止页面固定事件
  1201. // setTimeout(function () {
  1202. // _UOE.call(this, UE);
  1203. // }
  1204. // , 0);
  1205. // //异步执行 解决锁定的bug
  1206. // }
  1207. // }
  1208. // , false);
  1209. // }
  1210. // )();
  1211. // }
  1212. // }
  1213. // }
  1214. //------------------------------------------------------------------------------------------
  1215. // if (!("innerText" in HTMLElement.prototype)) {/*检测浏览器是否支持innerText这个方法*/
  1216. // U.UF.EV.boundProperties(HTMLElement.prototype, "innerText",
  1217. // function () {
  1218. // return this.textContent;
  1219. // },
  1220. // function (UDE) {
  1221. // this.textContent = UDE;
  1222. // }
  1223. // );
  1224. // }
  1225. //------------------------------------------------------------------------------------------
  1226. // if (!("outerHTML" in HTMLElement.prototype)) {/*检测浏览器是否支持outerHTML这个方法*/
  1227. // U.UF.EV.boundProperties(HTMLElement.prototype, "outerHTML",
  1228. // function () {
  1229. // var _UDOD = this.cloneNode(true),
  1230. // _UDTD = $$("div", {});
  1231. // _UDTD.appendChild(_UDOD);
  1232. // return _UDTD.innerHTML; /*如果不支持就使用innerhtml插入*/
  1233. // },
  1234. // function (UTH) {
  1235. // var i, _UDOD = U.selectEl(this), _UDPD = _UDOD.Parent(), _UDCD = $$("div", {
  1236. // "innerHTML": UTH
  1237. // }).childNodes, _UDTD = document.createDocumentFragment;
  1238. // for (i = 0; i < _UDCD.length; i++) {
  1239. // _UDTD.appendChild(_UDCD[i]);
  1240. // }
  1241. // ; _UDTD.insertBefore(_UDTD, this);
  1242. // _UDOD.remove();
  1243. // }
  1244. // );
  1245. // }
  1246. //------------------------------------------------------------------------------------------
  1247. // if (!("outerText" in HTMLElement.prototype)) {/*检测浏览器是否支持outerText这个方法*/
  1248. // U.UF.EV.boundProperties(HTMLElement.prototype, "outerText",
  1249. // function () {
  1250. // var _UDOD = this.cloneNode(true)
  1251. // , _UDTD = $$("div", {});
  1252. // _UDTD.appendChld(_UDOD);
  1253. // return _UDTD.innerText; /*如果不支持就使用innerText插入*/
  1254. // },
  1255. // function (UTH) {
  1256. // var i, _UDOD = U.selectEl(this), _UDPD = _UDOD.Parent(), _UDCD = $$("div", {
  1257. // "innerText": UTH
  1258. // }).childNodes, _UDTD = document.createDocumentFragment;
  1259. // for (i = 0; i < _UDCD.length; i++) {
  1260. // _UDTD.appendChild(_UDCD[i]);
  1261. // }
  1262. // _UDTD.insertBefore(_UDTD, this);
  1263. // _UDOD.remove();
  1264. // });
  1265. // }
  1266. //------------------------------------------------------------------------------------------
  1267. // if (!("currentStyle" in HTMLElement.prototype)) {
  1268. // U.UF.EV.boundProperties(HTMLElement.prototype, "currentStyle", function () {
  1269. // return getComputedStyle(this, false);
  1270. // },
  1271. // function () { });
  1272. // }
  1273. //------------------------------------------------------------------------------------------
  1274. // if (!("onresize" in HTMLElement.prototype) || !browser.msie) {//HTMLElement.prototype内没有onresize 则执行这个函数
  1275. // U.UF.CP.onresize = function (UDOD, UDTD, cb) {
  1276. // Size事件设置
  1277. // if (cb) {
  1278. // UDOD.contentDocument.defaultView.onresize = function () { U.UF.C.apply(UDTD, [[cb]])(); } //
  1279. // }
  1280. // else {
  1281. // try {
  1282. // delete this.__SizeElement__;
  1283. // } catch (e) { }
  1284. // }
  1285. // }
  1286. // U.UF.EV.boundProperties(HTMLElement.prototype, "onresize", function () {
  1287. // try {
  1288. // this.__SizeElement__.contentDocument.defaultView.onresize;
  1289. // } catch (e) {
  1290. // return null;
  1291. // }
  1292. // },
  1293. // function (cb) {
  1294. // if (this.tagName) {
  1295. // 设置Set事件
  1296. // var _UDOD = this.__SizeElement__;
  1297. // (U.UF.EL.getStyle(this, "position") == "static") && (this.style.position = "relative");
  1298. // if (!_UDOD || U.selectEl(_UDOD).Parent() != this && cb) {
  1299. // _UDOD = this.__SizeElement__ = $$("object", {
  1300. // "onload": function(){U.UF.CP.onresize(this, this, cb);},
  1301. // "type": "text/html",
  1302. // "data": "about:blank",
  1303. // "style": {
  1304. // "cssText": "display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1;visibility:hidden;margin:0;padding:0;"
  1305. // }
  1306. // }, this)[0];
  1307. // }
  1308. // else {
  1309. // U.UF.CP.onresize(_UDOD, this, cb);
  1310. // }
  1311. // }
  1312. // });
  1313. // }
  1314. // if (!("componentFromPoint" in HTMLElement.prototype)) { // --------- 上面有重复代码
  1315. // U.UF.EV.boundProperties(HTMLElement.prototype, "componentFromPoint", function () {
  1316. // return function () {
  1317. // var _UE = U.UF.EL.getMousePosition();
  1318. // var _UDE = U.UF.EL.getElementInfo(this);
  1319. // if ((_UE["X"] > _UDE["CW"] + _UDE["TX"]) || (_UE["Y"] > _UDE["CH"] + _UDE["TY"])) {
  1320. // return "outside";
  1321. // }
  1322. // return "";
  1323. // }
  1324. // },
  1325. // function () { });
  1326. // }
  1327. /**
  1328. * loading变化设置
  1329. * @param {element} 当前loading元素
  1330. */
  1331. /*U.UF.DL.loading.Donresize = function (UDOD, UDTD, UTF) {
  1332. if (UDOD["P"] > -1) { //loading变化设置
  1333. var _UDAD = U.selectEl("div", UDOD),
  1334. _UH = U.selectEl(UDOD).height() - _UDAD[0].offsetHeight; //loading大小变化
  1335. _UDAD[0].style.top = (_UH > 0 ? _UH : 0) / 2 + "px"; //loading图片位置设定
  1336. }
  1337. else { //取消loading
  1338. U.UF.DL.uploading(UDOD);
  1339. }
  1340. }*/
  1341. /**
  1342. * 取消loading
  1343. * @param {element} 当前loading元素
  1344. */
  1345. /*U.UF.DL.uploading = function (UDOD) {
  1346. UDOD = UDOD[0] || UDOD; //需要loading元素
  1347. var i, _UAE = ["__ULOADElement__", "__UCS__"], //loading元素遗留参数
  1348. _UDTD = UDOD[_UAE[0]], //loading
  1349. _UME = UDOD[_UAE[1]], //需loading元素原样式
  1350. _UCE = UDOD.style,
  1351. _UDE = { "width": "0px", "height": "0px", "overflow": "hidden", "padding": "0px", "borderWidth": "0px", "minHeight": "0px", "minWidth": "0px" }; //元素变回参数
  1352. //判断元素是否已经可以结束loading
  1353. if (_UDTD && ((_UDTD["P"]--) == 0)) {
  1354. for (i in _UDE) {
  1355. if (_UDE.hasOwnProperty(i)) {
  1356. //设置或者取消原参数
  1357. if (_UDE[i] == _UCE[i]) { _UDE[i] = _UME[i]; }
  1358. else { delete _UDE[i]; }
  1359. }
  1360. };
  1361. UDOD["__UCS__"] = null; //设置样式
  1362. $(_UDTD).remove(); //移除loading
  1363. $(UDOD).addAttrArray({ "style": _UDE }); //原loading元素样式回归
  1364. //清除残留参数
  1365. try { delete UDOD[_UAE[0]]; delete UDOD[_UAE[1]] }
  1366. catch (e) {
  1367. UDOD.removeAttribute(_UAE[0]);
  1368. UDOD.removeAttribute(_UAE[1]);
  1369. } return true;
  1370. }
  1371. }*/
  1372. ////#region 出让命名空间
  1373. ////出让命名空间
  1374. ////只有外部项目才会使用 为了和其他框架兼容的方案
  1375. //$.noConflict = function (UDE) {
  1376. // var _UDE = window.U.Json_;
  1377. // if (_UDE && _UDE != $) {
  1378. // window.U.Json_ = window.$; window.$ = _UDE;
  1379. // return window.U.Json_;
  1380. // }
  1381. // return $;
  1382. //}
  1383. ////#endregion
  1384. // filter: function (UTF, UDE) {//结果集筛选
  1385. // UDE = UDE || this; var _UTF, _UCE = [], j, i = 0; if (typeof UTF == "string") { UTF = this.getValue(UTF) } //处理制定的选择 转化成可识别选择
  1386. // for (i = 0; i < this.length; i++) {
  1387. // for (j in UTF) { if (UTF.hasOwnProperty(j)) { if (this[i][j] != UTF[j]) { break; } } }
  1388. // (this[i][j] == UTF[j]) && (_UCE.push(this[i]));
  1389. // }
  1390. // return U.select().osadd(_UCE); //添加子元素到制定的位置
  1391. // },
  1392. // siblings: function (UIE) { //当前元素所有的兄弟节点
  1393. // var i, _UDE = ["preva", "next"], _UAE = U.select();
  1394. // for (i = 0; i < _UDE.length; i++) { this.celement(_UDE[i] + "All", UIE, _UAE); }
  1395. // return _UAE
  1396. // },
  1397. // celement: function (UTP, UIE, UAE) { //获取元素
  1398. // var _UDOD, j, i = UIE || 0, _UL = UIE + 1 || this.length, _UTF = { "prevaAll": "previousSibling", "nextAll": "nextSibling"}[UTP]; UTP = _UTF || UTP; UAE = UAE || U.select();
  1399. // for (i = 0; i < _UL; i++) { //获取指定元素结果
  1400. // j = 1; _UDOD = this[i]; while ((j > 0 || (_UTF && _UDOD)) && _UDOD[UTP]) {
  1401. // do { _UDOD = _UDOD[UTP]; }
  1402. // while (_UDOD && _UDOD.nodeType !== 1);
  1403. // (_UDOD) && (UAE[UAE.length++] = _UDOD);
  1404. // j--;
  1405. // }
  1406. // }
  1407. // return UAE;
  1408. // },
  1409. // ofparent: function (UIE, UTF) {//获取offsetParent
  1410. // var i = UIE || 0, _UL = UIE + 1 || this.length, UAE = U.select();
  1411. // for (i = 0; i < _UL; i++) { UAE[UAE.length++] = U.UF.EL.offsetParent(this[i]); }
  1412. // return UAE;
  1413. // },
  1414. // prevaAll: function (UIE) {//当前元素之前所有的兄弟节点
  1415. // return this.celement("prevaAll", UIE);
  1416. // },
  1417. // nextAll: function (UIE) { //当前元素之后所有的兄弟节点
  1418. // return this.celement("nextAll", UIE);
  1419. // },
  1420. // replaceAll: function (UDE, UIE) {
  1421. // var _UME, i = UIE || 0, _UL = UIE + 1 || 1;
  1422. // for (; i < _UL; i++) {
  1423. // if (U.UF.C.isString(UDE)) { _UME = $$(UDE); } else { _UME = U.select(UDE).clone(true); }
  1424. // this.Parent(1, i).replaceChild(this[i], _UME);
  1425. // }
  1426. // },
  1427. // even: function () { //获取偶数元素
  1428. // return this.Auxiliary.selectel("even", this);
  1429. // },
  1430. // odd: function () { //获取奇数元素
  1431. // return this.Auxiliary.selectel("odd", this);
  1432. // },
  1433. // eq: function (UIE) { //索引制定位置的元素
  1434. // return this.Auxiliary.selectel("=" + UIE, this);
  1435. // },
  1436. // gt: function (UIE) { //索引大于的元素
  1437. // return this.Auxiliary.selectel(">" + UIE, this);
  1438. // },
  1439. // lt: function (UIE) {//索引小于的元素
  1440. // return this.Auxiliary.selectel("<" + UIE, this);
  1441. // },
  1442. // each: function (cb, UDE) { //遍历数据
  1443. // if (cb) { var i; UDE = UDE || this; for (i = 0; i < UDE.length; i++) { cb(i, UDE[i]); } }
  1444. // },
  1445. // only: function (UIE) { //选择没有兄弟节点的元素
  1446. // var i, j, _UCE, _UPE, UL = UIE + 1 || this.length;
  1447. // for (i = 0; i < UL; i++) { _UCE = this.parentElement(1, i).Child(); (_UCE.length != 1 || _UCE[0] != this[i]) && (this.del(i, true)); }
  1448. // this.del(); return this;
  1449. // },
  1450. // checked: function (UIE) {//获取所有给单选或者复选的元素
  1451. // var _UCE, j, i = UIE || 0, _UL = UIE + 1 || this.length, _UVE = U.select();
  1452. // for (i = 0; i < _UL; i++) {
  1453. // _UCE = U.select("input@type=checkbox", this[i]); //获取复选框
  1454. // for (j = 0; j < _UCE.length; j++) { (_UCE[j].checked) && (_UVE.osadd(_UCE[j])); } //添加所有给复选的元素
  1455. // }
  1456. // return _UVE;
  1457. // },
  1458. // selected: function (UIE) {//获取下拉列表中给选择的元素
  1459. // var _UCE, j, i = UIE || 0, _UL = UIE + 1 || this.length, _UVE = U.select();
  1460. // for (i = 0; i < _UL; i++) { }
  1461. // },
  1462. // before: function (UDOD, UIE) { //被选择元素前插入指定元素
  1463. // var i = UIE || 0, _UL = (UIE || 0) + 1;
  1464. // for (; i < UIE; i++) { this.append(UDOD, i, this[i].firstChild); }
  1465. // },
  1466. // top: function (UIE) { //获取offsetTop
  1467. // return this[UIE || 0].offsetTop;
  1468. // },
  1469. // left: function (UIE) { //获取offsetLeft
  1470. // return this[UIE || 0].offsetLeft;
  1471. // },
  1472. // width: function (UIE) {//获取长
  1473. // return U.UF.EL.getElementRealWidth(this[UIE || 0]);
  1474. // },
  1475. // innerWidth: function (UIE) { //获取内宽度 包含padding
  1476. // return this[UIE || 0].clientWidth;
  1477. // },
  1478. // outerWidth: function (UIE, UTF) { //获取整体宽度 包含 padding border ture包含margin
  1479. // this[UIE || 0].offsetWidth + this.css("marginLeft") + this.css("marginRight");
  1480. // },
  1481. // height: function (UIE) { //获取宽
  1482. // return U.UF.EL.getElementRealHeight(this[UIE || 0]);
  1483. // },
  1484. // innerHeight: function () { //内高度
  1485. // return this[UIE || 0].clientHeight;
  1486. // },
  1487. // outerHeight: function () { //外高度
  1488. // this[UIE || 0].offsetWidth + this.css("marginTop") + this.css("marginBottom");
  1489. // },
  1490. // replaceC: function (UDOD, UIE) { //元素顶替
  1491. // UIE = UIE || 0; var _UDPD, _UDTD = this[UIE];
  1492. // if (_UDTD) { _UDPD = this.Parent(1, UIE); (_UDPD) && (_UDPD.replaceChild(UDOD, _UDTD)); this[UIE] = UDOD; }; return this;
  1493. // },
  1494. // html: function (UHT, UIE) { return UHT != null ? this.addAttrArray({ "innerHTML": UHT }, UIE) : this[UIE || 0].innerHTML; }, //获取innerhtml
  1495. // text: function (UHT, UIE) { return UHT != null ? this.addAttrArray({ "innerText": UHT }, UIE) : this[UIE || 0].innerText; }, //获取innerText
  1496. // getBackgroundColor: function (UDE) { //获取设置背景图片
  1497. // if (U.UF.C.isString(UDE)) { }
  1498. // else if (Array.isArray(UDE)) { }
  1499. // },
  1500. // first: function () { //获取结果里的第一个元素
  1501. // return U.select(this[0]);
  1502. // },
  1503. // last: function () { //获取最后一个元素
  1504. // return U.select(this[this.length - 1]);
  1505. // },
  1506. // transition: function (UDE, USP, cb, UIE) { //过度动画使用
  1507. // var i, j, _UDW, _UTP, _UFN, _UAE = {}, _UHE = {}, _UME = [["scale", ""], ["translate,perspective", "px"], ["skew,rotate", "deg"]], _UCE = U.UF.EL.GCssAe(); //scale
  1508. // if (_UCE) {//Html5兼容
  1509. // _UTP = _UCE[2] + "transform"; _UAE[_UTP] = "";
  1510. // _UFN: for (i in UDE) {
  1511. // for (j = 0; j < _UME.length; j++) { if (_UME[j][0].split(",").indexOf(i) > -1) { _UDW = _UME[j][1]; _UAE[_UTP] += i + "(" + UDE[i] + _UDW + ") "; continue _UFN; } }
  1512. // _UHE[_UTP + "-" + i] = UDE[i];
  1513. // }
  1514. // this.addAttrArray({ "style": _UHE }).animate(_UAE, USP, cb, UIE); //执行动画
  1515. // }
  1516. // },
  1517. // slideToggle: function (UST, cb, UIE, UTF) {//滑动效果
  1518. // var j, _UTP, _UDE, _USC, i = UIE || 0, _UL = UIE + 1 || this.length, _USE = { height: "", marginBottom: "", marginTop: "", paddingBottom: "", paddingTop: "", display: "block" }, _UKE = _USE; //变化值
  1519. // for (; i < _UL; i++) { //设置动画
  1520. // _USC = this.css("cssText"); U.Json.Each(_USE,U.UF.C.apply(this, function (UAE, UIE) { if (UIE != "display") { if (UIE == "height") { _USE[UIE] = this.height() + "px"; } else { _USE[UIE] = this.css(UIE, null, i); } } })); //原初始值
  1521. // _UDE = [_USE, { "cssText": "height:0px;margin-top:0;margin-bottom:0;padding-top:0;padding-bottom:0;display:block;overflow:hidden"}]; //初始化隐藏动画
  1522. // if ((_UTP = (UTF === false || (UTF == null && this.css("display", "") == "none")))) { _UDE.reverse(); } //设置显示动画
  1523. // this.addAttrArray({ style: _UDE[0] }, i).animate(_UDE[1], UST, function () { this.Auxiliary.slideToggle(_USC + ";display:" + (_UTP ? "block" : "none"), i, _UL, cb); }, i); //设置出现和取消
  1524. // }
  1525. // },
  1526. // ready: function (cb) { //添加doc ready函数
  1527. // var _UTF = document.attachEvent ? "readystatechange" : "DOMContentLoaded", _UCB = [];
  1528. // _UCB[0] = U.UF.C.apply(document, function () {
  1529. // U.UF.EV.delElementEvent(_UTF, document, _UCB);
  1530. // cb()
  1531. // });
  1532. // U.UF.EV.addElementEvent(_UTF, document, _UCB[0]);
  1533. // },
  1534. // load: function (cb) { //load加载页面
  1535. // (!this.length) && (this.osadd(window)); var _UFN = function () { this.unbind("load", _UFN, 0); cb(); };
  1536. // this.bind("load", _UFN, 0);
  1537. // },
  1538. // contents: function () { },
  1539. // message: function () { //message 事件绑定
  1540. // },
  1541. // mousedown: function (cb, UTF, UIE) { //左右事件
  1542. // (cb) && (this.bind("mousedown", function () { var _UTF = event.button; _UTF = _UTF == 2 || _UTF == 3; if (!UTF || (UTF == "right" && _UTF) || (UTF == "left" && !_UTF)) { cb(); } }, UIE));
  1543. // return this;
  1544. // },
  1545. //把数据库的时间戳转换成可读时间
  1546. //1、带一个参数
  1547. //参数一:时间格式
  1548. // 1、javascrpt 自带的时间格式 datetime类型 Sun Mar 04 2018 18:45:54 GMT+0800 (中国标准时间)
  1549. // 2、sqlserver 时间格式 /Date(1364812396843)/
  1550. // 3、mongodb 时间格式 2018/01/01 01:01:01
  1551. // 4、mysql 时间格式 2018-01-01 01:01:01
  1552. // 5、nodejs的json时间"2018-03-04T11:14:27.878Z"
  1553. //js转换mysql中datetime日期格式为00-00-00 00:00:00,转换后为:2016:11:23 09:09:09格式
  1554. //U.UF.D.formatDateToArray = function (UOD, UTF) {
  1555. // var _UTP = typeof UOD == "string",
  1556. // _ude = ["getFullYear", "getMonth", "getDate", "getHours", "getMinutes", "getSeconds"];
  1557. // if (!UOD || !_UTP || (_UTP && UOD.indexOf("Date") > -1)) {
  1558. // UOD = _UTP ? new Date(parseInt(UOD.match(/[0-9]+/g)[0])) : (UOD || new Date());
  1559. // for (i = 0; i < _ude.length; i++) {
  1560. // _ude[i] = UOD[_ude[i]]() + (i == 1 ? 1 : 0);
  1561. // _ude[i] = i > 2 ? _ude[i].prefixInteger() : _ude[i];
  1562. // }
  1563. // } //返回时间
  1564. // else if (_UTP) {
  1565. // UOD = new Date(UOD); //获取当前的时间
  1566. // _ude = U.UF.D.formatDateToArray(UOD, true);
  1567. // } //mysql返回的时间
  1568. // return (UTF ? _ude : _ude.slice(0, 3).join("-") + " " + _ude.slice(3, 6).join(":")); //返回数据
  1569. // ///Date(1364812396843)/
  1570. // //2018/01/01 01:01:01
  1571. // //2018-01-01 01:01:01
  1572. //}
  1573. //U.UF.D.formatDateToArray = function (UOD, UTF) {
  1574. // try {
  1575. // var _UTP = typeof UOD == "string",
  1576. // _ude = ["getFullYear", "getMonth", "getDate", "getHours", "getMinutes", "getSeconds"];
  1577. // if (!UOD || !_UTP || (_UTP && UOD.indexOf("Date") > -1)) {
  1578. // UOD = _UTP ? new Date(parseInt(UOD.match(/[0-9]+/g)[0])) : (UOD || new Date());
  1579. // for (i = 0; i < _ude.length; i++) {
  1580. // _ude[i] = UOD[_ude[i]]() + (i == 1 ? 1 : 0);
  1581. // _ude[i] = i > 2 ? _ude[i].prefixInteger() : _ude[i];
  1582. // }
  1583. // } //返回时间
  1584. // else if (_UTP) {
  1585. // UOD = new Date(UOD); //获取当前的时间
  1586. // _ude = U.UF.D.formatDateToArray(UOD, true);
  1587. // } //mysql返回的时间
  1588. // return (UTF ? _ude : _ude.slice(0, 3).join("-") + " " + _ude.slice(3, 6).join(":")); //返回数据
  1589. // } catch (e) { return UOD; }
  1590. //}
  1591. /*-----------------------------------------------未使用的函数------------------------------------------*/
  1592. //js倒计处理
  1593. U.UF.D.DJS = (function () {
  1594. var _UFN = function (UDE, fun) {
  1595. var _UTF = false,
  1596. _UL = UDE.length - 1,
  1597. i = _UL, _UCE = [1, 24, 60, 60];
  1598. for (; i > -1; i--) {
  1599. if (UDE[i] > 0) {
  1600. UDE[i]--; if (i < _UL) {
  1601. UDE[i + 1] = _UCE[i + 1] - 1;
  1602. } _UTF = !_UTF; break;
  1603. }
  1604. }
  1605. (_UTF) && ((fun) && (fun(UDE)), setTimeout(function () { _UFN(UDE, fun) }, 1000)); //回调计时
  1606. }
  1607. //设置时间
  1608. return function (UTM, fun) {
  1609. var i, j, _UZ,
  1610. _UKE = [60, 60, 24, 1],
  1611. _ude = [],
  1612. _UTS = ((new Date(UTM[0], UTM[1] - 1, UTM[2],
  1613. UTM[3] || 0, UTM[4] || 0,
  1614. UTM[5] || 0)) - (new Date())) / 1000;
  1615. for (i = _UKE.length - 1; i >= 0; i--) {
  1616. _UZ = _UTS;
  1617. for (j = 0; j <= i; j++) {
  1618. j == i ? _UZ %= _UKE[j] : _UZ /= _UKE[j];
  1619. }
  1620. _ude.push(parseInt(_UZ, 10));
  1621. }
  1622. _UFN(_ude, fun); //获取倒计时的时间
  1623. }
  1624. })();
  1625. /*
  1626. * 获取浏览器信息
  1627. *
  1628. * @return {boolean} { chrome: true, msie:false, firefox:false, 360ee:true, ver: 36}
  1629. */
  1630. //U.UF.CI.Browser = function () {
  1631. //// var i,
  1632. //// _UAE = U.UF.CI.userAgent,
  1633. //// _USE = {},
  1634. //// _UVE = U.UF.S.browser, //区分浏览器
  1635. //// _UDE = U.UF.S.browsers, //个版本浏览器正则
  1636. //// _UCE = ["360ee", "360se", "se", "lbbrowser", "aoyou", "theworld", "worldchrome", "greenbrowser", "qqbrowser", "baidu", "MicroMessenger", "QQ", "AppleWebKit"]; //知名公司浏览器区分
  1637. //// //判断浏览器版本
  1638. //// for (i in _UDE) {
  1639. //// if (_UDE.hasOwnProperty(i)) {
  1640. //// _USE[i] = _UDE[i].test(_UAE);
  1641. //// }
  1642. //// }
  1643. //// //各个公司的版本
  1644. //// for (i = 0; i < _UCE.length; i++) {
  1645. //// if (_UAE.indexOf(_UCE[i]) > 0) {
  1646. //// _USE[_UCE[i]] = true;
  1647. //// break;
  1648. //// }
  1649. //// };
  1650. //// _USE.ver = _UAE.match(_UVE); //设置版本
  1651. //// return _USE; //获取内核和产商
  1652. // _bri= U.UF.CI.userAgent,//浏览器信息
  1653. // _obj = {},//空对象 用于装浏览器信息
  1654. // _bro = U.UF.S.browser, //区分浏览器
  1655. // _arr = ["360ee", "360se", "se", "lbbrowser", "aoyou", "theworld", "worldchrome", "greenbrowser", "qqbrowser", "baidu", "MicroMessenger", "QQ", "AppleWebKit"]; //知名公司浏览器区分
  1656. ////判断浏览器类型
  1657. // //各个公司的版本
  1658. // for (i = 0; i < _arr.length; i++) {
  1659. // if (_bri.indexOf(_arr[i]) > 0) {
  1660. // _obj[_arr[i]] = true; //如果是对应版本则为true
  1661. // break;//找到对应版本后就不再循环
  1662. // }
  1663. // };
  1664. // _bri= U.UF.CI.userAgent,//浏览器信息
  1665. // _bro = U.UF.S.browser, //区分浏览器
  1666. // _obj.ver = _bri.match(_bro); //设置浏览器版本等信息
  1667. // return _obj; //将信息返回
  1668. //};
  1669. /**
  1670. * 添加或者删除自定义属性
  1671. *
  1672. */
  1673. /*U.UF.EL.addAttributes = function (arr, name, value) {
  1674. var i, //用于循环
  1675. j, //用于循环
  1676. _UAE,
  1677. _UTP = UTV != null ? "setAttribute" : "removeAttribute"; //判断是设置还是删除属性
  1678. for (i = 0; i < UDE.length; i++) {//
  1679. _UAE = UDE[i];
  1680. if (_UAE) {
  1681. if (UCE && UCE.length) { //训话属性处理
  1682. for (j = 0; j < UCE.length; j++) {
  1683. _UAE = _UAE[UCE[j]];
  1684. }
  1685. }
  1686. _UAE[_UTP](USN, UTV); //执行删除获取添加属性
  1687. }
  1688. }
  1689. }
  1690. U.UF.EL.delAttributes = function (arr, name) {
  1691. var i, //用于循环
  1692. j, //用于循环
  1693. _UAE,
  1694. _UTP = UTV != null ? "setAttribute" : "removeAttribute"; //判断是设置还是删除属性
  1695. for (i = 0; i < UDE.length; i++) {//
  1696. _UAE = UDE[i];
  1697. if (_UAE) {
  1698. if (UCE && UCE.length) { //训话属性处理
  1699. for (j = 0; j < UCE.length; j++) {
  1700. _UAE = _UAE[UCE[j]];
  1701. }
  1702. }
  1703. _UAE[_UTP](USN, UTV); //执行删除获取添加属性
  1704. }
  1705. }
  1706. }*/
  1707. /**
  1708. * 获取元素所使用的样式
  1709. *
  1710. * @param {element} 需要获取样式的元素
  1711. * @param {string} 样式的key
  1712. */
  1713. /*U.UF.EL.getStyle = function (UDOD, UVE) {
  1714. if (UDOD && UDOD.style) {
  1715. UVE = U.UF.EL.styleConversion(UVE);
  1716. return (UDOD.style[UVE] || UVE == "cssText") ? UDOD.style[UVE] : (UDOD.currentStyle ? UDOD.currentStyle[UVE] || "" : "");
  1717. }
  1718. return ""; //获取js对应的style值
  1719. }*/
  1720. /**
  1721. * 添加删除获取class
  1722. *
  1723. * @param {array} 进行操作的对象
  1724. * @param {string} 确定循环范围
  1725. * @param {element} 正则表达式 获取字符
  1726. * @param {string} 获取或删除指令
  1727. * @return {boolean} 是否存在改样式
  1728. */
  1729. /*U.UF.C.ARClass = function (UDE, UIE, UCN, UTF) {
  1730. var _UCT, //储存对象样式名
  1731. _UFT, //储存索引值
  1732. _UIF, //储存索引值
  1733. i = UIE || 0; //循环初始化
  1734. _UL = UIE + 1 || UDE.length, //确定循环范围
  1735. _UL = Math.min(_UL, UDE.length);
  1736. _UCE = new RegExp("(\\s|^)" + UCN + "(\\s|$)"); //需要索引的值
  1737. for (; i < _UL; i++) {
  1738. _UCT = UDE[i].className;
  1739. _UFT = _UCT.match(_UCE);
  1740. if (UTF == "Add") {
  1741. (!_UFT) && (UDE[i].className += (_UCT ? " " : "") + UCN);
  1742. } //添加class
  1743. else if (UTF == "RE") { //删除class
  1744. (_UFT) && (_UIF = _UCT.indexOf(UCN) + UCN.length, UDE[i].className = _UCT.replace(_UCE, (_UIF == _UCT.length || !_UIF) ? "" : " "));
  1745. }
  1746. }
  1747. return _UFT;
  1748. }*/
  1749. /*
  1750. **作用:用于指定的元素进行删除指定的class,如果class存在,那么class就删除,如果class不存则不处理
  1751. **参数一:el1进行操作的对象
  1752. **参数二:el2获取className的字符
  1753. **参数三:str添加或删除指令,添加classname为Add,删除classname为Remove
  1754. */
  1755. /*U.UF.C.ARClass = function (el1, el2, str) {
  1756. var _Reg = el1.className.match(new RegExp("(\\s|^)" + el2 + "(\\s|$)")); // ( \\s|^ ) 判断前面是否有空格 (\\s | $ )判断后面是否有空格
  1757. var _b = !!(_Reg); //两个感叹号为转换为布尔值 以方便做判断
  1758. if (str == "Add") {//判断是否是添加classname
  1759. if (!_b) {//判断元素不存在指定的class
  1760. el1.className += " " + el2; //给指定的元素添加指定的class
  1761. }
  1762. }
  1763. if (str == "Remove") {//判断是否删除classname
  1764. if (_b) {//判断元素存在指定的class
  1765. el1.className = el1.className.replace(new RegExp("(\\s|^)" + el2 + "(\\s|$)"), " "); // replace方法是替换
  1766. }
  1767. }
  1768. }*/
  1769. ///**
  1770. //* 获取css3过渡动画
  1771. //*
  1772. //* @return {array} 过渡属性的值
  1773. //-----------[0] 过渡的css
  1774. //-----------[1] 过渡的回调函数
  1775. //-----------[2] 兼容的前缀
  1776. //-----------[3] 浏览器过渡的监视属性
  1777. //-----------[4] 浏览器结束的属性
  1778. //*/
  1779. //U.UF.EL.GCssAe = function () {
  1780. // var i, //遍历初始化
  1781. // _USE = $$("div").style, //获取div的样式
  1782. // //css兼容的形式
  1783. // _UDE = {
  1784. // "WebkitTransition": ["-webkit-transition", "webkitTransitionEnd", "-webkit-", "webkitRequest", "webkitCancel"], //webkit浏览器的兼容
  1785. // "OTransition": ["-o-transition", "oTransitionEnd", "-o-", "oRequest", "oCancel"], //Op 浏览的兼容
  1786. // "MozTransition": ["-moz-transition", "transitionend", "-moz-", "mozRequest", "mozCancel"], //火狐浏览器的兼容
  1787. // "MsTransform": ["-ms-transition", "transitionend", "-ms-"], //ie低版本的兼容
  1788. // "transition": ["transition", "transitionend", "", "r", "cancel"] //html5的兼容
  1789. // }
  1790. // //循环判断获取
  1791. // for (i in _UDE) {
  1792. // if (_UDE.hasOwnProperty(i) && _USE[i] !== undefined) {
  1793. // _UDE[i].push(i);
  1794. // return _UDE[i];
  1795. // }
  1796. // }
  1797. //}
  1798. ///**
  1799. //* css动画异步
  1800. //*
  1801. //*/
  1802. //U.UF.EL.AsynCssEM = function (UDID, UDSD, cb, UIF, UIF) {
  1803. // this.removeClass(UDID, UIF);
  1804. // U.selectEl(UDSD).remove();
  1805. // (cb) && (cb(UIF));
  1806. //}
  1807. // 窗体全局变量
  1808. //U.UF.F.isTop = false;
  1809. //U.UF.F._closes = [];
  1810. //U.UF.F._index = [];
  1811. /*U.UF.F.closefun = function (UDOD) {
  1812. U.UF.F._closes.splice(U.UF.F._closes.indexOf(UDOD), 1);
  1813. };*/
  1814. /**
  1815. * 放大窗体
  1816. *
  1817. * @param {number} 数字1
  1818. * @param {number} 数字2
  1819. * @param {boolean} 返回数字1是否大于数字2
  1820. * @param {number} 数字2
  1821. * @param {boolean} 返回数字1是否大于数字2
  1822. */
  1823. /*U.UF.F.windowZooming = function (UDOD, UDTD, cb, UDOM, UST) {
  1824. var _USE, _UCE, _UTE, _UTF = true,
  1825. _UDTD = U.selectEl(UDOD),
  1826. _UST = UDOD.style,
  1827. _UED = U.UF.C.GetPDWH(UDOD),
  1828. _UW = US.width,
  1829. _UH = US.height;
  1830. UDTD = UDTD || (event && event.srcElement); //U.UF.C.getElementInfo(UDOD)
  1831. if (_UED["OW"] >= _UW && _UED["OH"] >= _UH) {
  1832. _UCE = { "title": "全屏", "onmousedown": UST ? (UST.onmousedown || (UDOM ? UDOM.onmousedown : null)) : null, "style": UST ? UST["style"] || { "width": "80%", "height": "80%", "left": "10%", "top": "10%"} : { "width": "80%", "height": "80%", "left": "10%", "top": "10%"} };
  1833. _UTF = false;
  1834. }
  1835. else {
  1836. _UTE = UDOD["style"];
  1837. _USE = { "onmousedown": UDOM ? UDOM.onmousedown : null,
  1838. "style": { "cssText": _UTE["cssText"] + ";", "width": _UTE.width, "height": _UTE.height, "top": _UTE.top, "left": _UTE.left, "display": "block" }, "width": _UED["CW"], "height": _UED["CH"]
  1839. };
  1840. _UCE = { "title": "缩小",
  1841. "onmousedown": UDOM ? (function(){UDOM.onmousedown], [U.UF.F.DragElement(UDOD, UDTD, cb, UDOM, _USE)}) : null,
  1842. "style": { "top": "0px", "left": "0px", "width": (_UW - _UED["PD"][1] - _UED["PD"][3] - _UED["BD"][1] - _UED["BD"][3]) + "px",
  1843. "height": (_UH - _UED["PD"][0] - _UED["PD"][2] - _UED["BD"][0] - _UED["BD"][2]) + "px"
  1844. }
  1845. }; //_UED["PXT"] + _UED["PXL"] +
  1846. }
  1847. (UDOM) && (UDOM.onmousedown = _UCE.onmousedown);
  1848. (UDTD) && ($(UDTD).addAttrArray({ "onclick": [[U.UF.F.windowZooming, [UDOD, UDTD, cb, UDOM, _USE]]], "title": _UCE["title"] })); //拖动 //全屏或者恢复调用
  1849. UDOD.style.display = "block";
  1850. $(UDOD).animate(_UCE.style, 150, function () {
  1851. var _UED = U.UF.C.GetPDWH(UDOD); U.UF.F.withf(cb, [_UED["CW"], UDOD["CH"], _UTF]);
  1852. }); //窗体大小设置 //回调大小设置
  1853. }*/
  1854. //最大化移动窗体
  1855. /**
  1856. * 放大窗体
  1857. *
  1858. * @param {number} 数字1
  1859. * @param {number} 数字2
  1860. * @param {boolean} 返回数字1是否大于数字2
  1861. * @param {number} 数字2
  1862. * @param {boolean} 返回数字1是否大于数字2
  1863. */
  1864. /*U.UF.F.DragElement = function (UDOD, UDTD, cb, UDOM, UST) {
  1865. if (U.UF.F.DragMouseDown.ST) {
  1866. U.UF.F.DragMouseDown.ST.set({ move: function (UTE) { //缩小使用
  1867. var _UW = US.width,
  1868. _UE = U.UF.C.getMousePosition(UDOD);
  1869. (!UST.width) && (UST.width = US.width * 0.8);
  1870. (!UST.height) && (UST.height = US.height * 0.8);
  1871. U.UF.C.AddObj(UST["style"], {
  1872. "top": "0px", "left": Math.min(Math.max((_UE["X"] - UST.width / 2), 0), (_UW - UST.width)) + "px"
  1873. }); //设置位置大小
  1874. U.UF.F.windowZooming(UDOD, UDTD, cb, UDOM, UST);
  1875. (UTE && UTE.move) && (UTE.move = null); //设置大小
  1876. }
  1877. });
  1878. }
  1879. }*/
  1880. //窗体最小化
  1881. /*U.UF.F.windowMinimize = function (UDOD) {
  1882. UDOD = U.selectEl(UDOD);
  1883. var i, _UCE, _UW = US.width,
  1884. _UH = US.height,
  1885. _UGE = UDOD.getElementInfo();
  1886. _UDE = { "cssText": UDOD[0].style.cssText, "display": "none" };
  1887. UDOD.animate({ "cssText": "overflow:hidden;left:0px;top:" + ((_UH - _UGE["OH"] + 100) / 2) + "px;width:" + (Math.min(_UGE["OW"] / 3, 100)) + "px;height:" + (Math.min(_UGE["OH"] / 3, 100)) + "px;opacity:0.8" }, 200, function(){UDOD.css("cssText", _UDE.cssText]], [UDOD.css, ["display", _UDE.display);});
  1888. (parent.U.MD.N) && (setTimeout(function () { parent.U.MD.N.UrlWrite([], ""); }, 0));
  1889. }
  1890. */
  1891. //关闭窗口
  1892. /*U.UF.F.closeWindow = function (UDOD, UTF) {
  1893. var _UDTD = U.selectEl(UDOD);
  1894. (_UDTD.css("display") != "none") && (_UDTD.fadeIn(150, UTF == "remove" ? function () {
  1895. _UDTD.remove(); _UDTD = null;
  1896. } : "")); //移除
  1897. (parent.U.MD.N && UTF !== true) && (parent.U.MD.N.UrlWrite([], ""));
  1898. (U.D && U.MD.D.Tb && U.MD.D.T.taskbars) && (U.MD.D.T.taskbars.close(UDOD)); //异步url重写
  1899. (U.UF.F._closes.indexOf(UDOD) == -1) && (U.UF.F._closes.push(UDOD));
  1900. setTimeout(function(){U.UF.F.closefun(UDOD);}, 0); //删除处理区
  1901. }
  1902. */
  1903. //窗口居中
  1904. /*U.UF.F.windowTopCenter = function (UDOD, cb) {
  1905. var i, _UL, _UT, _UW, _UH,
  1906. _UTF = U.selectEl(UDOD).css("display") == "none",
  1907. _UDE = U.selectEl(UDOD).addAttrArray({ "style": { "display": "block"} })[0],
  1908. _UDPD = U.UF.C.TOSP(UDOD), _UW = _UDPD.offsetWidth || US.width,
  1909. _UH = _UDPD.offsetHeight || US.height;
  1910. _UL = (_UW - _UDE["offsetWidth"]) / 2 + _UDPD["scrollLeft"];
  1911. _UT = (_UH - _UDE["offsetHeight"]) / 2 + _UDPD["scrollTop"];
  1912. if (U.UF.F._index[2] && U.UF.F._index[2] !== UDOD && Math.floor(_UL) == U.UF.F._index[2].offsetLeft && Math.ceil(_UT) == U.UF.F._index[2].offsetTop) { _UL += 20; _UT += 20; }
  1913. U.UF.F._index[2] = UDOD;
  1914. U.UF.F.topWindow($(UDOD).addAttrArray({ "style": { "cssText": "left:" + _UL + "px;top:" + _UT + "px;z-index:" + ((parent.US.ZINDEX ++) + 1)} })[0]);
  1915. (U.UF.C.isFunction(cb)) && (cb());
  1916. (_UTF && UDOD.onresize) && (UDOD.onresize()); //定位
  1917. }*/
  1918. //窗体置顶
  1919. /*U.UF.F.topWindow = function (UDOD, UTF) {
  1920. (U.UF.Ut.isEvent(UDOD)) && (UDOD = null);
  1921. UDOD = UDOD || U.UF.F.GetEE();
  1922. var i, _UDPD,
  1923. _UDE = U.UF.F.getWindow(UDOD);
  1924. if (UTF !== true) {
  1925. setTimeout(function(){U.UF.F.topWindow(UDOD || _UDE[0], true);}, 0);
  1926. }
  1927. else {
  1928. if (_UDE && _UDE.length) {
  1929. for (i = 0; i < _UDE.length; i++) {
  1930. if (((_UDPD = U.selectEl(_UDE[i]).Parent()) && (_UDPD == document.body || _UDPD.id == "usestudio-server" || _UDPD.id == "UD_SY")) && U.selectEl(_UDE[i]).attr("__top__") != "false" && (!UTF == true || U.UF.F._closes.indexOf(_UDE[i]) == -1)) { //置顶判断
  1931. $(_UDE[i]).addAttrArray({ "style": { "cssText": "z-index:" + (((US || parent.US).ZV++) + 1) + ";display:block"} })
  1932. }
  1933. };
  1934. }
  1935. return parent.US.ZINDEX ;
  1936. }
  1937. }
  1938. */
  1939. //获取顶层窗体
  1940. /*U.UF.F.getWindow = function (UDOD) {
  1941. var i, _UCE = [],
  1942. _UDTD = UDOD,
  1943. _UDBD = document.body,
  1944. _UDSD = U.selectEl("#UD_SY")[0] || U.selectEl("#usestudio-server")[0] || _UDBD;
  1945. if (_UDSD) {
  1946. while ((_UDTD = U.UF.C.TOSP(_UDTD, true, "absolute")) && (_UDTD && (_UDTD != _UDSD && _UDTD != _UDBD))) {
  1947. _UCE.push(_UDTD);
  1948. _UDTD = _UDTD.parentNode;
  1949. }
  1950. return _UCE; //.slice(0, -1);
  1951. }
  1952. }*/
  1953. //主处理分层次系统
  1954. /*U.UF.F.clickTopWindow._UFN = function (cb, UTF) { //处理函数
  1955. //页面置顶处理
  1956. // try { this.focus(); } catch (e) { }
  1957. if (U.UF.F.isTop) { clearTimeout(U.UF.F.isTop); }
  1958. else {
  1959. if (UTF && !U.UF.F.isTop) {
  1960. U.UF.F.isTop = setTimeout(function () {
  1961. (cb || top.U.UF.F.topWindow)(null, true);
  1962. U.UF.F.isTop = false;
  1963. }, 0); return;
  1964. }
  1965. else if (!U.UF.F.isTop) {
  1966. (cb || top.U.UF.F.topWindow)(null, true);
  1967. (event && event.type == "mousedown") && (U.UF.F.isTop = true);
  1968. }
  1969. else if (U.UF.F.isTop == true) { U.UF.F.isTop = false; }
  1970. }
  1971. U.UF.F.isTop = setTimeout(function () {
  1972. U.UF.F.isTop = false;
  1973. }, 0);
  1974. }*/
  1975. //获取置顶元素
  1976. U.UF.F.GetEE = function () {
  1977. var _UE = window.event;
  1978. if (!_UE) { return document.activeElement; }
  1979. return _UE.srcElement;
  1980. }
  1981. ////#region 拉伸窗体
  1982. ////虚拟框
  1983. //U.UF.F.maskFrame = function () {
  1984. // return $$("div", { "style": { "cssText": "width:100%;height:100%;position:absolute;top:0;left:0;"} }, document.body);
  1985. //}
  1986. ///*
  1987. //* 拖动框
  1988. //*
  1989. //* @param {element} 需要创建虚拟框的元素
  1990. //* @param {object} 元素的位置
  1991. //----------参数为getElementInfo 返回值
  1992. //*/
  1993. //U.UF.F.foundVirtualBox = function (UDOD, UE) {
  1994. // UDOD = U.selectEl(UDOD);
  1995. // UE = UE || UDOD.getElementInfo(); //获取元素的位置
  1996. // return $$("div", { "style": { "cssText": "pointer-events:none;border:2px solid Gray;position:absolute;top:" + (UE["OT"] - 2) + "px;left:" + (UE["OL"] - 2) + "px;width:" + (UE["OW"]) + "px;height:" + (UE["OH"]) + "px;z-index:" + (US.ZINDEX + 10)} }, UDOD.Parent());
  1997. //}
  1998. ///*
  1999. //* 拉伸函数处理
  2000. //*
  2001. //* @param {element} 需要拉伸的元素
  2002. //* @param {function} 拉伸回调函数
  2003. //----------参数为getElementInfo 返回值
  2004. //*/
  2005. //U.UF.F.AddOM = function (UDOD, cb) {
  2006. // if (!$(".UD_W_WT", UDOD)[0]) { //拉伸对象不存在
  2007. // var i,
  2008. // _UTE = U.UF.F.RCDG(UDOD, null, cb), //创建拉伸处理
  2009. // _UTP = "UD_W_WT",
  2010. // _UDE = [["H", "up"], ["MR", "right"], ["B", "down"], ["ML", "left"], ["HL", "topright"], ["BR", "bottomright"], ["BL", "bottomleft"], ["HR", "topleft"]], //拉伸所有的监视 和 className 的设置
  2011. // _UDTD = $$("div", { "className": "UD_W_WT" }); //新建立一个容器
  2012. // for (i = 0; i < _UDE.length; i++) { //添加上下左右处理元素
  2013. // $$("div", { "className": _UTP + "_" + _UDE[i][0], "onmousedown": _UTE.set(_UDE[i][1]) }, _UDTD);
  2014. // }
  2015. // UDOD.appendChild(_UDTD); //添加拉伸元素
  2016. // }
  2017. //}
  2018. ///*
  2019. //* 拉伸执行
  2020. //*
  2021. //* @param {element} 需要拉伸的元素
  2022. //* @param {string} 需要调用的回调
  2023. //* @param {function} 拉伸回调函数
  2024. //----------参数为getElementInfo 返回值
  2025. //*/
  2026. //U.UF.F.RCDG = function (UDOD, UTF, cb) {
  2027. // return new U.UF.F.RCDG.init(UDOD, UTF, cb);
  2028. //}
  2029. ///*
  2030. //* 拉伸执行
  2031. //*
  2032. //* @param {element} 需要拉伸的元素
  2033. //* @param {string} 需要调用的回调
  2034. //* @param {function} 拉伸回调函数
  2035. //*/
  2036. //U.UF.F.RCDG.init = function (UDOD, UTF, cb) { //拖动的拉伸
  2037. // /*
  2038. // 注释:
  2039. // -----cb 回调函数
  2040. // -----UDOD 拉伸的原函数
  2041. // */
  2042. // U.UF.C.AddObj(this, { cb: cb, UDOD: UDOD });
  2043. // (UTF) && (this.set(UTF)); //设置回调
  2044. //}
  2045. //U.UF.F.RCDG.init.prototype = {
  2046. // /*
  2047. // * 拉伸执行
  2048. // *
  2049. // * @param {element} 需要拉伸的元素
  2050. // * @param {string}
  2051. // * @param {function} 拉伸回调函数
  2052. // */
  2053. // set: function (UTF) {
  2054. // var i, _UDMD,
  2055. // _UDOD = this.UDOD,
  2056. // _UE = U.UF.EL.getElementInfo(_UDOD), //当前位置
  2057. // _UDE = [["move", UTF], ["up", "mup"]];
  2058. // if (UTF && event.button != 2 && (_UE["OH"] != US.height || _UE["OW"] != US.width)) { //非右键
  2059. // //内部使用变量设置
  2060. // U.UF.C.AddObj(this, {
  2061. // UMD: (_UDMD = U.UF.F.maskFrame()), //拉伸虚拟框
  2062. // UTF: UTF, //拖动时回调函数
  2063. // UTOD: U.UF.F.foundVirtualBox(_UDOD), //虚拟框
  2064. // E: _UE, //当前的位置大小
  2065. // H: _UE.H, //原高
  2066. // W: _UE.W, //原长
  2067. // T: _UE.OT, //原top
  2068. // L: _UE.OL//原left
  2069. // });
  2070. // this.UTOD.setCapture(); //创建使用的变量
  2071. // //虚拟框和拖动看置顶
  2072. // U.UF.F.topWindow(this.UTOD);
  2073. // U.UF.F.topWindow(_UDMD); //虚拟框
  2074. // //拖动元素监视
  2075. // for (i = 0; i < _UDE.length; i++) {
  2076. // document["onmouse" + _UDE[i][0]] = U.UF.C.apply(this, [[this[_UDE[i][1].toLocaleLowerCase()]]]);
  2077. // }
  2078. // //返回拖动对象
  2079. // return this; //设置拉伸
  2080. // }
  2081. // },
  2082. // //向上拉伸
  2083. // up: function () {
  2084. // var _UE = U.UF.EL.getMousePosition(), //获取鼠标的位置
  2085. // _UT = Math.min(Math.max(_UE["Y"], 0), this.T + this.H - 4), //获取拉伸头部的top位置
  2086. // _UH = this.H + (this.T - _UT); //计算高度
  2087. // U.selectEl(this.UTOD).addAttrArray({ "style": { "cssText": "top:" + (_UT - 2) + "px;height:" + (_UH) + "px"} }); //设置样式
  2088. // },
  2089. // //下面拉伸
  2090. // down: function () {
  2091. // var _UE = U.UF.EL.getMousePosition(); //鼠标所在的位置
  2092. // _UE["Y"] = Math.max(Math.min(_UE["Y"], US.height), this.T); //获取拉伸的位置
  2093. // this.UTOD.style.height = (_UE["Y"] - this.T) + "px"; //拉伸后的大小处理
  2094. // },
  2095. // //左边拉伸
  2096. // left: function () {
  2097. // var _UE = U.UF.EL.getMousePosition(), //鼠标所在的位置
  2098. // _UL = Math.min(Math.max(_UE["X"], 0), this.L + this.W - 4), //左边位置处理
  2099. // _UW = this.W + this.L - _UL; //长度变化
  2100. // U.selectEl(this.UTOD).addAttrArray({ "style": { "cssText": "left:" + (_UL - 2) + "px;width:" + (_UW) + "px"} });
  2101. // },
  2102. // //右边
  2103. // right: function () {
  2104. // var _UE = U.UF.EL.getMousePosition(); //鼠标所在的位置
  2105. // _UE["X"] = Math.max(Math.min(_UE["X"], US.width), this.L); //右边位置处理
  2106. // this.UTOD.style.width = (_UE["X"] - this.L) + "px"; //内容大小处理
  2107. // },
  2108. // //左上
  2109. // topleft: function () {
  2110. // this.up(); //向上拉伸
  2111. // this.left(); //左边拉伸
  2112. // },
  2113. // //右上
  2114. // topright: function () {
  2115. // this.up(); //向上拉伸
  2116. // this.right(); //右边拉伸
  2117. // },
  2118. // //左下
  2119. // bottomleft: function () {
  2120. // this.down(); //向下拉伸
  2121. // this.left(); //向左拉伸
  2122. // },
  2123. // //右下
  2124. // bottomright: function () {
  2125. // this.down(); //向下拉伸
  2126. // this.right(); //右边拉伸
  2127. // },
  2128. // //结束拉伸
  2129. // mup: function () {
  2130. // var i, _UPE = this.E.PD,
  2131. // _UBE = this.E.BD,
  2132. // _UDTD = U.selectEl(this.UTOD), //拉伸元素
  2133. // _UCE = U.UF.EL.getElementInfo(this.UTOD), //拉伸元素的大小
  2134. // _UDE = [_UCE["W"], _UCE["H"]];
  2135. // //设置得到的位置和大小
  2136. // for (i = 0; i < _UPE.length; i++) {
  2137. // _UDE[(i + 1) % 2] -= (_UPE[i] + _UBE[i]);
  2138. // }
  2139. // //设置拉伸元素
  2140. // U.selectEl(this.UDOD).addAttrArray({ "style": { "cssText": "left:" + (_UCE["OL"] + 2) + "px;top:" + (_UCE["OT"] + 2) + "px;width:" + _UDE[0] + "px;height:" + _UDE[1] + "px"} }); //设
  2141. // //清空
  2142. // U.selectEl(_UDTD).remove();
  2143. // _UDTD[0].releaseCapture();
  2144. // document.onmousemove = document.onmouseup = null;
  2145. // U.selectEl(this.UMD).remove();
  2146. // //回调设置
  2147. // U.UF.F.withf(this.cb, _UDE); //清空 //执行回调
  2148. // }
  2149. //}
  2150. ///*
  2151. //* 回调执行
  2152. //*
  2153. //* @param {object} 回调函数或者参数
  2154. //* @param {object} 回调的参数
  2155. //*/
  2156. //U.UF.F.withf = function (UAE, UDE) {
  2157. // if (UAE) {
  2158. // var i, j, k, _UCE, _UDOD,
  2159. // _UKE = {};
  2160. // for (i in UAE) {
  2161. // if (UAE.hasOwnProperty(i)) {
  2162. // //处理元素共同变化处理 这个会更加最大拖拉的元素 自适应
  2163. // if (i == "with") {
  2164. // for (j = 0; j < UAE[i].length; j++) {
  2165. // _UCE = UAE[i][j];
  2166. // _UDOD = _UCE["Element"]; //获取需要变化的元素集
  2167. // for (k in _UCE) {
  2168. // if (_UCE.hasOwnProperty(k) && k != "Element") { //变化的样式处理
  2169. // _UKE[k] = _UCE[k] + UDE[k == "width" ? 0 : 1];
  2170. // }
  2171. // }
  2172. // U.selectEl(_UDOD).addAttrArray({ style: _UKE });
  2173. // }
  2174. // }
  2175. // //直接回调自己处理
  2176. // else { U.UF.C.apply(null, UAE[i])(UDE); } //执行回调
  2177. // }
  2178. // }
  2179. // }
  2180. //}
  2181. ////#endregion
  2182. /**
  2183. * style样式转换 如 text-align => textAlign 或者相反的换
  2184. *
  2185. * @param {array} 进行操作的对象
  2186. * @param {string} 确定循环范围
  2187. */
  2188. /*U.UF.EL.styleConversion = function (UST, UTF) {
  2189. UTF = UTF ? [/[A-Z]/g, "-", 0, "toLowerCase"] : [/-[a-z ]/g, "", 1, "toUpperCase"]; //转换的样式或者属性
  2190. return UST.replace(UTF[0], function (UMS) { //利用正则转换
  2191. return UTF[1] + UMS.charAt(UTF[2])[UTF[3]]();
  2192. });
  2193. }*/
  2194. /**
  2195. * 获取鼠标位置
  2196. *
  2197. * @param {element} 相对对象
  2198. * @param {element} 进暂无使用行操作的对象
  2199. * @return {array} 过渡属性的值
  2200. */
  2201. /*U.UF.C.GetMousep = function (UDOD, UDTD) {
  2202. var _UE = U.UF.EV.getEventSource(), //获取MouseEvent
  2203. _UET = (_UE.touches && _UE.touches[0]) ? _UE.touches[0] : _UE, //如果是手机点击则获取touches[0]对象
  2204. _UDE = { "X": _UET.clientX || _UET["pageX"] || 0, "Y": _UET.clientY || _UET["pageY"] || 0 }, //储存坐标的对象
  2205. _UGE = { BCRL: 0, PXL: 0, BCRT: 0, PXT: 0 }; //用于储存数据sss
  2206. (UDTD || UDOD) && (_UGE = UDTD || U.UF.EL.offsetParent(UDOD, true),
  2207. _UGE = U.UF.EL.getElementInfo(_UGE)); //获取相对元素的位置
  2208. U.UF.C.AddObj(_UDE, { "TX": _UGE.BCRL - _UGE.PXL, "TY": _UGE.BCRT - _UGE.PXT }); //获取位置与上级相对位置
  2209. U.UF.C.AddObj(_UDE, { "X": _UDE["X"] - (_UDE["TX"] || 0), "Y": _UDE["Y"] - (_UDE["TY"] || 0), "MX": _UDE.X, "MY": _UDE.Y }); //设置值
  2210. return _UDE;
  2211. }*/
  2212. ///**
  2213. //* 统一处理函数,解决闭包添加事件的问题
  2214. //* 使用apply,把事件与属性添加到对象上,而不是添加到window顶级对象。使用apply而不是call,是因为apply第二个参数可以传递参数数组,代码更少。
  2215. //* 调用方法 U.UF.C.apply(this,'执行函数的事件') 例如 U.UF.C.apply(this,'this.style.display="none"');
  2216. //*解决作用域的问题函数名称为:U.FC.C.apply,主要用于在javascript中实现类的功能
  2217. //* @param {object} 将要绑定事件与属性的对象,如没有,可以传递null或者this,此处还需要优化,很多地方都会调用此函数,会导致速度降低。
  2218. //* @param {object} 函数与参数组成的数组。
  2219. //案例:U.FC.C.apply(this,function(){}); //this用dialog做案例.
  2220. //案例: U.FC.C.apply(element,function(){});
  2221. //*/
  2222. //U.UF.C.apply = function (retElement, obj) {
  2223. // //retElement 将要绑定事件与属性的对象,如没有,可以传递null或者this,此处还需要优化,很多地方都会调用此函数,会导致速度降低。
  2224. // //obj 时间和属性组成的参数数组
  2225. // return function () {
  2226. // if (obj) {
  2227. // var i, //循环初始化
  2228. // j, //循环初始化
  2229. // _URE,
  2230. // _UAE,
  2231. // _UTE = (retElement) || this,
  2232. // _UME = Array.prototype.slice.apply(arguments); //arguments 转化成数组
  2233. // if (typeof obj == "string") { _URE = (new Function(obj)).apply(_UTE, _UME); }
  2234. // else if (typeof obj == "function") { _URE = obj.apply(_UTE, _UME); }
  2235. // else {
  2236. // for (i = 0; i < obj.length; i++) {
  2237. // if (obj[i] && obj[i][0]) { //函数存在
  2238. // _UAE = obj[i][1];
  2239. // (!_UAE) && (_UAE = []);
  2240. // (!U.UF.Ut.isEvent(_UME[0]) || _UME.length > 1) && (_UAE = _UAE.concat(_UME)); //event == null ||
  2241. // //循环添加至
  2242. // for (j = 0; j < _UAE.length; j++) {
  2243. // if (typeof _UAE[j] == "string") {
  2244. // try {
  2245. // if (_UAE[j].indexOf(this) > -1 || _UAE[j].indexOf("retElement") > -1 || _UAE[j].indexOf("event") > -1) { _UAE[j] = eval("0,(" + _UAE[j] + ")"); } //制定参数解析
  2246. // else if (U.UF.S.Num.test(_UAE[j])) { _UAE[j] = Number(_UAE[j]); } //数字转化
  2247. // } catch (e) { U.UF.C.console(e); }
  2248. // }
  2249. // }
  2250. // try {
  2251. // if (U.UF.C.isString(obj[i][0])) {
  2252. // _URE = eval(obj[i][0]).apply(_UTE, _UAE); //eval效率不高 特殊情况才用
  2253. // }
  2254. // else if (U.UF.C.isFunction(obj[i][0])) { _URE = obj[i][0].apply(_UTE, _UAE); }
  2255. // }
  2256. // catch (e) { U.UF.C.console(e); } //函数执行错误
  2257. // }
  2258. // }
  2259. // }
  2260. // return _URE;
  2261. // }
  2262. // //直接掉function(){},不传递obj参数时,返回false。
  2263. // else { return false; }
  2264. // }
  2265. //}
  2266. /**
  2267. * 修改设置制定样式后获取所有设置的元素
  2268. *
  2269. * @param {element} 元素
  2270. * @param {string} 获取的类型
  2271. * @param {string} 是添加还是移除属性
  2272. -----------De 移除属性
  2273. * @param {object} 设置的属性
  2274. * @return {array} 通过参数2获取的元素
  2275. */
  2276. /*U.UF.EL.SetElement = function (UDE, UTP, URE, UTF) {
  2277. if (UDE) {
  2278. (typeof (UDE) == "string") && (UDE = $$("div", { "innerHTML": UDE }));
  2279. UDE = UDE || document;
  2280. var i, //用于循环
  2281. _UFT,
  2282. _UAE,
  2283. _UDOD,
  2284. _UMS = "",
  2285. _UCE = [];
  2286. UTP = (UTP == "*" || !UTP) ? "&*" : UTP; //需要获取的值
  2287. if (UTF) {
  2288. for (i in UTF) {
  2289. UTP += ("[" + i + (UTF[i] ? ("=" + UTF[i]) : "") + "]"); //属性选择
  2290. }
  2291. }
  2292. if ((_UAE = U.selectEl(UTP, UDE)) && UTF !== false && URE) { //设置
  2293. _UCE = _UAE[(_UFT = URE == "De") ? "remove" : "addAttrArray"](_UFT ? null : URE);
  2294. }
  2295. (URE == "De") && (_UCE = [_UCE.length > 0 ? _UCE : _UAE, UDE]); //如果为删除返回两个值 一个是选中的值 一个是传入的元素集
  2296. return _UCE;
  2297. }
  2298. return [];
  2299. }*/
  2300. /*
  2301. ** 作用:修改设置指定样式后获取所有设置的元素
  2302. ** @param {element} el 获取需要修改样式的元素
  2303. ** @param {element} key 获取属性的名
  2304. ** @param {boolean} b 如果b为true,则设置元素属性
  2305. ** @param {element} value 获取属性的value值
  2306. ** 实例:console.log(U.UF.EL.SetElement($("script")[0], 'key', true, 'value'))//设置属性
  2307. ** console.log(U.UF.EL.SetElement($("script")[0], 'key'))//获取属性
  2308. */
  2309. U.UF.EL.SetElement = function (el, key, b, value) {
  2310. var i; // 用于循环
  2311. if (el) { // 判断元素是否存在
  2312. if (b === true) { // 如果b为true 则设置元素属性
  2313. el.setAttribute(key, value);
  2314. return el.getAttribute(key) // 返回元素的属性值
  2315. }
  2316. for (i = 0; i < el.attributes.length; i++) { // 循环元素的属性
  2317. if (el.attributes[i].nodeName === key) { // 判断元素的属性名是否跟key相同
  2318. return el.attributes[i].nodeValue // 返回获取的元素的属性值
  2319. }
  2320. }
  2321. }
  2322. return 0
  2323. }
  2324. /**
  2325. * 根据ID获取指定的祖先元素
  2326. *
  2327. * @param {element} 当前元素
  2328. * @param {string} 祖先元素的id
  2329. * @return {element} 祖先元素
  2330. */
  2331. /*U.UF.EL.getAncestor = function (UDOD, UTID) {
  2332. while (UDOD && !(UDOD == UTID || UDOD.id == UTID)) { //递归寻找父级
  2333. UDOD = UDOD.parentNode;
  2334. }
  2335. return UDOD;
  2336. }
  2337. number: /\(([\s\S]*?)\)/, //数字的使用
  2338. ename: /=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*/g, //[]选择符的使用
  2339. escape: /(&|![\w\u00c0-\uFFFF\-]|\@[\w\u00c0-\uFFFF\-]+=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*)/g, //需要转义的正则
  2340. nregular: /[>|+|~]/g, //伪类选择
  2341. con: /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, //通用符的使用
  2342. className: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, //className的定义
  2343. id: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, //id的定义
  2344. name: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/, //name选择符处理
  2345. attr: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,
  2346. tagName: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/, child: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/, //标签选择符处理
  2347. pos: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/, //子元素选择器
  2348. pseudo: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
  2349. /**
  2350. * 获取元素的位置大小
  2351. *
  2352. * @param {element} el 元素
  2353. * @return {object} 返回元素的位置 函数内有详细的注释
  2354. */
  2355. U.UF.EL.getElementInfo = function (el) {
  2356. // UDOD要获取位置的元素
  2357. if (el) {
  2358. var i, //用于循环
  2359. _arr, //存放所有数据的集合
  2360. _arrbd, //用于获取元素的border属性
  2361. _arrpd = [], //用于获取元素的padding属性
  2362. _arrwh = [], //储存width、height变量
  2363. _arroffset = ["Top", "Right", "Bottom", "Left"], //用于连接字符串 获得offset属性
  2364. _elgetbc = el.getBoundingClientRect(), //返回一个矩形对象
  2365. _elxy = U.UF.M.pageXY(el), //获取UDOD的位置
  2366. _elp = U.UF.EL.offsetParent(el); //获取元素offsetParent
  2367. for (i = 0; i < _arroffset.length; i++) { //筛选 padding 和 border
  2368. _arrpd[i] = U.UF.EL.getStyle(el, "padding" + _arroffset[i]).toInt(); //总元素padding属性为获取元素指定的样式padding加上offset属性的整型
  2369. //_arrwh[i] = (_arrbd = U.UF.EL.getStyle(el, "border" + _arroffset[i] + "Width").toInt()).length ? 0 : _arrbd;
  2370. if ((_arrbd = U.UF.EL.getStyle(el, "border" + _arroffset[i] + "Width").toInt()).length) {//判断是否拥有元素的指定样式border和width两个属性
  2371. _arrwh[i] = 0; //存储border和width变量的则为0
  2372. } else {
  2373. _arrwh[i] = _arrbd//否则,则获取和元素的padding属性一样的值
  2374. }
  2375. }
  2376. _arr = {
  2377. PD: _arrpd, //元素的padding
  2378. BD: _arrwh, //元素的border
  2379. PXT: (document.documentElement.scrollTop) + _elp.scrollTop, //滚动条top位置
  2380. PXL: (document.documentElement.scrollLeft) + _elp.scrollLeft, //滚动条left位置
  2381. SH: el.scrollHeight, //包含滚动掉的高度
  2382. SW: el.scrollWidth, //包含滚动条的长度
  2383. SL: el.scrollLeft, //滚动条向左的位置
  2384. ST: el.scrollTop, //滚动条向右的位置
  2385. CH: el.clientHeight, //页面不包含 border padding宽度
  2386. CW: el.clientWidth, //页面不包含 border padding长度
  2387. CT: el.clientTop, //页面margin + top的高度
  2388. CL: el.clientLeft, //页面margin + left的长度
  2389. OH: el.offsetHeight, ///页面包含 border padding宽度
  2390. OW: el.offsetWidth, //页面包含 border padding长度
  2391. OL: el.offsetLeft, //页面left的长度
  2392. OT: el.offsetTop, //页面top的高度
  2393. BCRH: _elgetbc.bottom - _elgetbc.top, //元素的显示高度
  2394. BCRW: _elgetbc.right - _elgetbc.left, //元素的显示长度
  2395. BCRT: _elgetbc.top, //元素的显示top
  2396. BCRL: _elgetbc.left, //元素的显示left
  2397. BCRB: _elgetbc.bottom, //元素的显示bottom
  2398. BCRR: _elgetbc.right, //元素的显示right
  2399. TX: _elxy[1], //元素的显示高度
  2400. TY: _elxy[0]//元素的显示高度
  2401. };
  2402. _arr.H = _arr["OH"] - _arr["PD"][1] - _arr["PD"][3] - _arr["BD"][1] - _arr["BD"][3]; //原宽度 不包含所有的border padding margin
  2403. _arr.W = _arr["OW"] - _arr["PD"][0] - _arr["PD"][2] - _arr["BD"][0] - _arr["BD"][2] //原长度 不包含所有的border padding margin
  2404. // U.UF.C.AddObj(_arr, {
  2405. // H: _arr["OH"] - _arr["PD"][1] - _arr["PD"][3] - _arr["BD"][1] - _arr["BD"][3], //原宽度 不包含所有的border padding margin
  2406. // W: _arr["OW"] - _arr["PD"][0] - _arr["PD"][2] - _arr["BD"][0] - _arr["BD"][2] //原长度 不包含所有的border padding margin
  2407. // });
  2408. return _arr;
  2409. }
  2410. return {};
  2411. }
  2412. ///**
  2413. //* resize变化处理 包含了resizestart endresize 由于resize会出发多次 所有这里可分为 start 和 end
  2414. //*
  2415. //* @param {object} resize对象
  2416. //*/
  2417. //U.UF.EV.resize = function (obj) {
  2418. // var _obj = new U.UF.EV.resize.init(obj); //初始化监视
  2419. // return U.UF.C.apply(_obj, _obj.exec); //设置执行的方式
  2420. //}
  2421. ///**
  2422. //* resize方法函数
  2423. //*
  2424. //* @param {object} resize对象
  2425. //*/
  2426. //U.UF.EV.resize.init = function (obj) {
  2427. // U.UF.C.AddObj(this, this.u = obj); //添加事件监视
  2428. //}
  2429. ///**
  2430. //* resize方法
  2431. //*
  2432. //*/
  2433. //U.UF.EV.resize.init.prototype = {
  2434. // exec: function () { //执行resize处理
  2435. // this.start(); //onresize回调处理
  2436. // (this.ti) && (clearTimeout(this.ti)); //取消end监视
  2437. // this.ti = setTimeout(function () { this.end(); }, 0); //end处理
  2438. // (U.UF.C.isFunction(this.u)) && (this.u()); //end事件等待
  2439. // },
  2440. // start: function () {
  2441. // this.iss = true; //设置已经start
  2442. // (!this.iss && this.s) && (this.s()); //函数回调
  2443. // },
  2444. // end: function () {
  2445. // this.iss = false; //end结束
  2446. // (this.e) && (this.e()); //resizeend处理
  2447. // }
  2448. //}
  2449. var i, j, k, _UNE, _UTP, _UVE, _UAE, _UST, _UTE = this, i = item || 0, _UL = item + 1 || this.length, _UGE = { "class": "className", "html": "innerHTML", "text": "innerText", "float": "cssFloat" }, _UME = ["width,height,top,bottom,left,right", "px"];
  2450. for (; (i < _UL && i < this.length); i++) {
  2451. for (j in UDE) {
  2452. if (UDE.hasOwnProperty(j)) {
  2453. if (j == "style") { //style赋值
  2454. _UVE = ""; _UAE = UDE[j];
  2455. for (k in _UAE) { //添加cssText
  2456. if (_UAE.hasOwnProperty(k)) {
  2457. _UTP = U.UF.EL.styleConversion(k, true); _UNE = _UAE[k];
  2458. if ((k in this[i][j]) && (_UTP == "css-text" || _UAE[k]) && this[i].cloneNode) {
  2459. if (_UTP == "css-text") { _UVE = _UAE[k] + ";" + _UVE; } //cssText赋值
  2460. else { (_UME[0].split(",").indexOf(_UTP, null, true) > -1 && U.UF.C.isStringInt(_UNE)) && (_UNE += _UME[1]); _UVE += _UTP + ":" + _UNE + ";"; } //单个属性赋值
  2461. continue;
  2462. }
  2463. this[i][j][U.UF.EL.styleConversion(k)] = _UAE[k] || "";
  2464. }
  2465. }
  2466. (_UVE != null) && (this[i][j]["cssText"] += ";" + _UVE); //添加css值
  2467. }
  2468. else { //其它属性赋值
  2469. if (j.indexOf("on") == 0 && "array,string".indexOf(U.UF.C.getType((_UVE = UDE[j]))) > -1) {
  2470. ((_UVE = UDE[j]) && typeof _UVE[0] == "function") && (_UVE = [_UVE]);
  2471. UDE[j] = U.UF.C.apply(this[i], _UVE);
  2472. } //事件特殊处理
  2473. if (typeof (_UAE = this[i])[j] == "object" && typeof UDE[j] == "object") { U.UF.C.AddObj(_UAE[j], UDE[j]); } //object赋值
  2474. else { if (_UAE[j] !== UDE[j]) { _UST = _UAE[j]; k = _UGE[j] || j; if (U.UF.C.isString((_UVE = UDE[j])) && U.UF.EL.isCustomAttributes(_UAE, k)) { try { _UAE.setAttribute(k, _UVE); } catch (e) { } } _UAE[k] = UDE[j]; } } //非原属性下的
  2475. }
  2476. }
  2477. }
  2478. }
  2479. /**
  2480. * 获取大小位置
  2481. *
  2482. * @param {element} 元素
  2483. * @return {object} 获取元素的大小
  2484. */
  2485. U.UF.EL.getElementInfo = function (el) {
  2486. var i, _UST, //i用于循环 _UST用于存放width和height
  2487. _UDTD = U.selectEl(el), //获取当前元素
  2488. _UPE = [], //用于存放padding的大小
  2489. _UBE = [], //用于存放border的大小
  2490. _UAE = ["Top", "Right", "Bottom", "Left"]; //用于存放top、left、right、bottom的属性
  2491. //获取padding border
  2492. for (i = 0; i < _UAE.length; i++) {//循环四周有没有padding和border的top、left、right、bottom属性
  2493. _UPE[i] = _UDTD.css("padding" + _UAE[i]).toInt(); //把当前元素获取到的padding属性的大小存放在数组中
  2494. _UBE[i] = _UDTD.css("border" + _UAE[i] + "Width").toInt(); //把当前元素的border属性的大小存放在数组中
  2495. (_UBE[i].length) && (_UBE[i] = 0); //border的长度并且border的长度不为0
  2496. }
  2497. //获取长宽
  2498. _UAE = ["width", "height"]; //用于存放width、height的属性
  2499. for (i = 0; i < _UAE.length; i++) {//循环width和height
  2500. _UST = _UAE[i]; _UAE[i] = _UDTD[_UST]();
  2501. }
  2502. //返回大小处理
  2503. return {
  2504. "PD": _UPE, //padding
  2505. "BD": _UBE, //border
  2506. "OW": _UAE[0] + _UPE[1] + _UPE[3] + _UBE[1] + _UBE[3], //包含padding border 的长
  2507. "OH": _UAE[1] + _UPE[0] + _UPE[2] + _UBE[0] + _UBE[2], //包含padding border 宽
  2508. "CW": _UAE[0], //不包含padding border 宽
  2509. "CH": _UAE[1]//不包含padding border 宽
  2510. };
  2511. }
  2512. //,
  2513. // animate: function (UDE, USP, cb, UIF, UGE) { //css3动画效果和js原始动画 动画排队
  2514. // if (UDE) {
  2515. // var i, j, k, _UTE, _UKW, _USE, _UE, _UDID, _UTID, _UME,
  2516. // _UL = UIF + 1 || this.length,
  2517. // _UDSD = $$("div").style,
  2518. // _UAE = [{ "style": {} }, "", {}],
  2519. // _UCE = ["width", "height", "top", "bottom", "left", "right"],
  2520. // _UBE = U.UF.CI.getBrowser(), _UTF = _UBE.browser == "msie" && parseInt(_UBE["ver"]), _USD = { "fast": 300, "normal": 1000, "slow": 3000}[USP], _UAF = UDE["IES"]; delete UDE["IES"]; _USD = _USD || USP || 1000;
  2521. // for (i in UDE) { if (UDE.hasOwnProperty(i)) { if (_UDSD[(_UKW = U.UF.EL.styleConversion(i))] === undefined) { _UAE[0][i] = UDE[i]; } else { _UAE[0]["style"][_UKW] = UDE[i]; if (_UKW == "cssText") { _UAE[1] += UDE[i] + ";"; } else { _UAE[1] += (_UKW = U.UF.EL.styleConversion(i, true)) + ":" + UDE[i] + ";"; for (j = 0; j < _UCE.length; j++) { if (_UCE[j] == i || _UKW.indexOf(_UCE[j]) > -1) { _UAE[2][_UKW] = ""; break; } } } } } } //设置css3动画和js动画
  2522. // for (i = (UIF || 0); i < _UL; i++) { _USE = ""; for (j in _UAE[2]) { if (UDE.hasOwnProperty(j)) { j += j.indexOf("padding") > -1 ? "-width" : ""; _UE = this.css(j, null, i); _UE = isNaN(_UE.toInt()) ? ((this[j] ? this[j](i) : 0) + "px") : _UE; _USE += j + ":" + _UE + ";"; } }; (_USE) && (this.addAttrArray({ "style": { "cssText": _USE} }, i)); } //设置初始值
  2523. // if (_UTF && _UTF < 10 && _UAF == null) { this.addAttrArray(_UAE[0], UIF); (U.UF.C.isFunction(cb)) && (cb()); } //Ie8不动画 (cb) && (setTimeout(cb, 0));
  2524. // else { //IE9以上动画渲染
  2525. // if (((!_UTF || _UTF > 9) && (_UAE[1] || _UAE[0].className))) { //css3动画加速
  2526. // _USE = U.UF.EL.GCssAe();
  2527. // _UDID = "UEM" + Guid.guidNoDash();
  2528. // _UE = _USE[0] + ":all " + (_USD / 1000) + "s linear;";
  2529. // if (UGE) {
  2530. // for (i in UGE) { _UE += _USE[0] + "-" + i + ":" + UGE[i] + ";"; }
  2531. // }
  2532. // _UE = "." + _UDID + " {" + _UE + "}"; //设置动画属性
  2533. // this.bind(_USE[1], (_UTE = U.UF.C.apply(this, function () {
  2534. // this.unbind(_USE[1], _UTE);
  2535. // U.UF.EL.AsynCssEM.apply(this, [_UDID, _UDSD, cb, UIF]);
  2536. // }))); //添加动画
  2537. // _UDSD = U.UF.DL.LoadStyle(_UE);
  2538. // U.select.IsAnimate(this, UIF, _UDID);
  2539. // this.addClass(_UDID, UIF);
  2540. // (_UAE[0].className) && (this.addClass(_UAE[0].className, UIF), delete _UAE[0].className);
  2541. // this.addAttrArray(_UAE[0], UIF); delete _UAE[0].className; delete _UAE[0].style; //移除设置回调
  2542. // }
  2543. // for (i in _UAE[0]) {
  2544. // if (_UAE[0].hasOwnProperty(i)) { //非css动画或者IE8动画
  2545. // _UME = U.UF.C.Animation({ "cb": function () { this.Auxiliary.animate([UIF, _UL, _UTID, _USE ? null : cb], _UAE[0]); }, "ti": _USD }); //动画加速
  2546. // U.select.IsAnimate(this, UIF, _UME);
  2547. // break;
  2548. // }
  2549. // }
  2550. // }
  2551. // }
  2552. // return this;
  2553. // },
  2554. // stop: function (item) { //停止动画回播
  2555. // var _USE, i = item || 0,
  2556. // _UL = item == null ? this.length : item + 1;
  2557. // for (; i < _UL; i++) {
  2558. // if ((_USE = this[i].__Animate__)) {
  2559. // if (U.UF.C.isString(_USE[2])) {
  2560. // this[i].className = _USE[2];
  2561. // this.addClass(_USE[1], i);
  2562. // this.css("cssText", _USE[0], i);
  2563. // }
  2564. // else {
  2565. // _USE[2].stop();
  2566. // }
  2567. // }
  2568. // }
  2569. // },
  2570. // opacity: function (UVE, item) { //设置透明度 全兼容
  2571. // if (this.length) {
  2572. // var i, _USE = {}, _UDE = { opacity: 1, "-webkit-opacity": 1, "-moz-opacity": 1, "-khtml-opacity": "", filter: "" };
  2573. // for (i in _UDE) { if (i in this[0].style) { _USE[i] = (_UDE[i] = i == "filter" ? "alpha(opacity=" + (UVE * 100) + ")" : UVE); } }
  2574. // }
  2575. // },
  2576. // fadeIn: function (USP, cb, item) {//动画淡出,,
  2577. // var i, _UKE, _USE = {}, _UDOD = $$("div").style, _UDE = ["opacity", "-webkit-opacity", "-moz-opacity", "-khtml-opacity", "filter"]; cb = U.UF.C.apply(this, function () {
  2578. // this.addAttrArray({ "style": (_UKE = { "display": "none" }) }, item);
  2579. // cb();
  2580. // }); //设置回调
  2581. // for (i = 0; i < _UDE.length; i++) { if (_UDE[i] in _UDOD) { _UKE[_UDE[i]] = ""; _USE[_UDE[i]] = _UDE[i] == "filter" ? "alpha(opacity=0)" : "0"; break; } }; return this.animate(_USE, USP || "fast", cb, item); //查看
  2582. // },
  2583. // fadeOut: function (USP, cb, item) {//动画淡入
  2584. // var i, _USE = {}, _UDOD = $$("div").style, _UDE = ["opacity", "-webkit-opacity", "-moz-opacity", "-khtml-opacity", "filter"]; for (i = 0; i < _UDE.length; i++) { if (_UDE[i] in _UDOD) { _USE[_UDE[i]] = _UDE[i] == "filter" ? "alpha(opacity=100)" : "1"; _UDE = _UDE[i]; break; } };
  2585. // _USE[_UDE] = _UDE == "filter" ? "alpha(opacity=100)" : "1"; this.addAttrArray({ "style": { "display": "block"} }); return this.animate(_USE, USP || "fast", cb, item); //查看 _USE
  2586. // },
  2587. // slideUp: function (USP, cb, item) { //滑动消失
  2588. // this.slideToggle(USP, cb, item);
  2589. // },
  2590. // slideDown: function (USP, cb, item) { //滑动出现
  2591. // this.slideToggle(USP, cb, item, false);
  2592. // }
  2593. // on: function (UE, US, cb, item) { //事件绑定
  2594. // var _UDE = this; (US) && (_UDE = this.find(US, item)); _UDE.bind(UE, cb, item);
  2595. // },
  2596. // off: function (UE, US, cb, item) { //取消事件绑定
  2597. // var _UDE = this; (US) && (_UDE = this.find(US, item)); _UDE.unbind(UE, cb, item);
  2598. // }
  2599. // resize: function (cb, item) { //resize事件
  2600. // this.bind("resize", U.UF.EV.resize(cb), item);
  2601. // },
  2602. // resizestart: function (cb, item) { //resoze开始
  2603. // this.resize({ s: cb }, item);
  2604. // },
  2605. // resizeend: function (cb, item) { //设置sizeend
  2606. // this.resize({ e: cb }, item);
  2607. // },
  2608. //#region 扩展选择器
  2609. //U.select.fn.extend({
  2610. //});
  2611. // scrollTo: function (UT, UTI) {//移动变化
  2612. // var _UDOD = this[0]; (_UDOD) && (U.UF.EV.scrollToPosition(UT, _UDOD, UTI));
  2613. // }
  2614. ////#region 事件监听区域
  2615. //U.select.fn.extend({
  2616. // cache: [], //保存对象使用选择器保留值
  2617. // cacheE: function (UDOD) {//保存对象的值
  2618. // var i, _UDE = U.select.fn.cache;
  2619. // for (i = 0; i < _UDE.length; i++) { if (_UDE[i].UDOD === UDOD) { return _UDE[i]; } } //获取制定的元素绑定
  2620. // this.events = {}; this.UDOD = UDOD; this.id = Guid.guidNoDash(); _UDE.push(this); return this; //添加事件监听对象
  2621. // }
  2622. //});
  2623. //U.select.fn.cacheE.prototype = {
  2624. // removeEvent: function (UDE, UAE) { //删除event
  2625. // var i, j, _UME, _UDOD = this.UDOD, _UCE = this.events; (typeof UDE == "string") && (_UME = UDE, (UDE = {})[_UME] = UAE); UDE = UDE || _UCE;
  2626. // for (i in UDE) { if (UDE.hasOwnProperty(i) && (_UME = _UCE[i])) { for (j = 0; j < _UME.length; j++) { if (_UME[j] == UDE[i] || _UCE == UDE || !UDE[i]) { U.UF.EV.delElementEvent(i, _UDOD, _UME.splice(j, 1)[0]); j--; } } } } //清除事件
  2627. // },
  2628. // addevent: function (UDE, UAE) { //添加event监听
  2629. // var i, _UCE = this.events;
  2630. // (!_UCE[UDE]) && (_UCE[UDE] = []); _UCE[UDE].push(UAE);
  2631. // }
  2632. //}
  2633. ////#endregion
  2634. ////window.$$.NS = function (UNE, UDE, UPE, UCE, UUE) { //创建带有命名空间的元素
  2635. //// var _UDOD = U.selectEl(document.createElementNS(UUE || "http://www.w3.org/2000/svg", UNE));
  2636. //// _UDOD.addAttrArray(UDE); (UPE) && (_UDOD.appendTo(UPE, 0, UCE)); return _UDOD[0]; //添加属性
  2637. ////}
  2638. ////#region 辅助函数
  2639. ////U.select.fn.extend({
  2640. //// selecte: {
  2641. //// "only-child": function (UDE) { //获取作为单一孩子节点元素
  2642. //// return Array.prototype.slice.call(U.select(UDE).only());
  2643. //// },
  2644. //// "nth-child": function (UDE, UTP) { //获取第几个元素
  2645. //// var i, j, _UCE, _UN = UTP.match(this.match.number)[1], _UTF = _UN.indexOf("n") > -1, _UAE = []; _UN = _UN.toInt();
  2646. //// if (!_UTF || _UN) {
  2647. //// for (i = 0; i < UDE.length; i++) {
  2648. //// _UCE = U.select(UDE[i]).parentElement().Child();
  2649. //// if (_UTF) { for (j = _UN; j <= _UCE.length; j += _UN) { if (UDE[i] == _UCE[j - 1]) { _UAE.push(UDE[i]); (_UN == 1) && (j++); break; } } } //(xn)查找
  2650. //// else { (_UCE[_UN - 1] == UDE[i]) && (_UAE.push(UDE[i])); } //直接获取第几个
  2651. //// }
  2652. //// }
  2653. //// return _UAE;
  2654. //// },
  2655. //// "first-child": function (UDE) { //获取开头元素
  2656. //// var i, _UAE = [];
  2657. //// for (i = 0; i < UDE.length; i++) { (!U.select(UDE[i]).prev().lenght) && (_UAE.push(UDE[i])); }
  2658. //// return _UAE;
  2659. //// },
  2660. //// "last-child": function (UDE) { //获取末尾元素
  2661. //// var i, _UAE = [];
  2662. //// for (i = 0; i < UDE.length; i++) { (!U.select(UDE[i]).next().length) && (_UAE.push(UDE[i])); }
  2663. //// return _UAE;
  2664. //// },
  2665. //// first: function (UDE) { //获取第一个匹配的元素
  2666. //// return UDE.length ? UDE[0] : UDE;
  2667. //// },
  2668. //// last: function (UDE) { //获取最后一个匹配元素
  2669. //// return UDE.length ? UDE[UDE.length - 1] : UDE;
  2670. //// },
  2671. //// nth: function (UDE, UTP) { //获取匹配的第几个元素
  2672. //// var i, _UAE = [], _UN = UTP.match(this.match.number)[1], _UTF = _UN.indexOf("n") > -1; _UN = _UN.toInt();
  2673. //// if (_UTF || _UN) {
  2674. //// if (_UTF) { for (i = _UN; i <= UDE.length; i += _UN) { _UAE.push(UDE[i - 1]); } }
  2675. //// else { (UDE[_UN]) && (_UAE.push(UDE[_UN])); }
  2676. //// }
  2677. //// return _UAE;
  2678. //// },
  2679. //// getevenodd: function (UDE, UTP) { //获取奇数和偶数集
  2680. //// var i, j, _UDPD, _UCE, _UTF, _UPE = [], _UAE = [];
  2681. //// for (i = 0; i < UDE.length; i++) {
  2682. //// _UCE = null; _UDPD = UDE[i].parentNode;
  2683. //// for (j = 0; j < _UPE.length; j++) { if (_UPE[j][0] == _UDPD) { _UCE = _UPE[j]; _UCE[1].push(UDE[i]); } }
  2684. //// (!_UCE) && (_UPE.push((_UCE = [_UDPD, [UDE[i]]]))); _UTF = (_UCE[1].length - 1) % 2; ((UTP == "even" && !_UTF) || (UTP == "odd" && _UTF)) && (_UAE.push(UDE[i]));
  2685. //// }
  2686. //// return _UAE;
  2687. //// },
  2688. //// even: function (UDE) { //获取偶数集
  2689. //// return this.selecte.getevenodd(UDE, "even");
  2690. //// },
  2691. //// odd: function (UDE) { //获取奇数集
  2692. //// return this.selecte.getevenodd(UDE, "odd");
  2693. //// },
  2694. //// eq: function (UDE, UTP) { //获取制定的位置列
  2695. //// return UDE[UTP.match(this.match.number)[1].toInt()];
  2696. //// },
  2697. //// gt: function (UDE, UTP) { //索引大于的元素
  2698. //// U.select(UDE).gt(UTP.match(this.match.number)[1].toInt());
  2699. //// },
  2700. //// lt: function (UDE, UTP) {//索引小于的元素
  2701. //// U.select(UDE).lt(UTP.match(this.match.number)[1].toInt());
  2702. //// },
  2703. //// "first-of-type": function () { },
  2704. //// "last-of-type": function () { },
  2705. //// "only-of-type": function () { },
  2706. //// "nth-last-child": function () { },
  2707. //// "nth-of-type": function () { },
  2708. //// "nth-last-of-type": function () { }
  2709. //// }
  2710. ////});
  2711. ////简单的复杂的方法统一
  2712. ////$.SetMethod.prototype = U.select.prototype;
  2713. ////#endregion
  2714. ////#endregion
  2715. //,
  2716. // length: 0, //初始化长度
  2717. // splice: Array.prototype.splice,
  2718. // constructor: Array
  2719. //U.select.fn.init.prototype = U.select.fn; //添加扩展
  2720. // el = el || document;
  2721. // //如果是字符串说明用户要通过选择器找到字符串
  2722. // if (U.UF.C.isString(name)) {
  2723. // var i, j, k, _UTP, _UIE, _UTF, _UVE, _UGE, _UXE, _UJE, _UOT, _UST = "",
  2724. // _UDE = el,
  2725. // _UME = this.match, //获取选取的正则
  2726. // _UCE = name.replace(_UME.escape, U.select.GetSelector),
  2727. // _UCN = _UME.con,
  2728. // _UKE = [],
  2729. // _UBE = U.UF.CI.getBrowser(); //浏览器版本
  2730. // _UBE = (_UBE.browser == "msie" && _UBE.ver.toInt()); //ie的版本
  2731. // //拆分选择器
  2732. // do {
  2733. // _UCN.exec("");
  2734. // _UCE = _UCN.exec(_UCE);
  2735. // _UKE.push(_UCE[1] + (_UCE[2] || ""));
  2736. // _UCE = _UCE[3];
  2737. // }
  2738. // while (_UCE); //生成获取集合
  2739. // _UXE: for (i = 0; (i < _UKE.length && _UDE); i++) {
  2740. // if (_UBE < 6 && _UME.nregular.test((_UTF = _UKE[i + 1]))) {//处理选择伪类等
  2741. // if (_UTF == "+" || _UTF == "~") { //向下选择
  2742. // if (_UOT = (_UME.pos.test(_UKE[i]) || _UME.child.test(_UKE[i]))) {
  2743. // _UVE = this.getelement(_UKE[i], _UDE, _UST);
  2744. // (U.UF.Ut.isHtmlElement(_UVE)) && (_UVE = [_UVE]);
  2745. // }
  2746. // else {
  2747. // _UJE = this.getType(_UKE[i]);
  2748. // }
  2749. // _UIE = this.getType(_UKE[i + 2]);
  2750. // _UDE = this.gete(_UDE, _UIE[4], _UST, _UIE);
  2751. // for (j = 0; j < _UDE.length; j++) { //判断获取
  2752. // _UTP = false;
  2753. // this.celement.apply[_UDE[j]], [_UTF == "+" ? "previousSibling" : "prevaAll", NaN, _UGE = []]; //获取
  2754. // for (k = 0; k < _UGE.length; k++) {
  2755. // if (_UOT) {
  2756. // if (_UVE.indexOf(_UGE[k]) > -1) { _UTP = true; break; }
  2757. // } else if (_UGE[0][_UJE[3]].toLowerCase() == _UKE[i]) { _UTP = true; break; }
  2758. // }
  2759. // (!_UTP) && (_UDE.splice(j, 1), j--);
  2760. // }
  2761. // }
  2762. // else if (_UTF == ">") { //子元素
  2763. // _UVE = this.getelement(_UKE[i], _UDE, _UST);
  2764. // if (typeof _UVE == "string") {
  2765. // _UVE == this.gete(_UDE, "", _UST);
  2766. // }
  2767. // if ((_UDE = _UVE)) {
  2768. // (U.UF.Ut.isHtmlElement(_UDE)) && (_UDE = [_UDE]);
  2769. // _UGE = [];
  2770. // _UIE = this.getType(_UKE[i + 2]);
  2771. // _UVE = this.gete(_UDE, _UIE[4], "", _UIE);
  2772. // for (j = 0; j < _UVE.length; j++) {
  2773. // for (k = 0; k < _UDE.length; k++) {
  2774. // if (_UDE[k] == _UVE[j].parentNode) {
  2775. // _UGE.push(_UVE[j]); break;
  2776. // }
  2777. // }
  2778. // }; _UDE = _UGE;
  2779. // }
  2780. // }
  2781. // _UST = ""; i += 2;
  2782. // (_UIE[2]) && (_UDE = this.getelement("", _UDE, _UIE[2]));
  2783. // }
  2784. // else {
  2785. // if (_UKE[i].length > 1 && _UKE[i].indexOf("*") > -1) {
  2786. // _UKE[i] = _UKE[i].substr(1);
  2787. // if (!(_UDE = document[_UKE[i]])) {
  2788. // if (U.UF.CI.getBrowser().browser == "msie") {
  2789. // _UDE = document.getElementById(_UKE[i]);
  2790. // } else { _UDE = document.embeds[_UKE[i]]; }
  2791. // } _UST = "";
  2792. // }
  2793. // else {
  2794. // _UVE = this.getelement(_UKE[i], _UDE, _UST);
  2795. // if (typeof _UVE == "string") { _UST += _UVE; }
  2796. // else if (_UVE) { _UDE = _UVE; _UST = ""; }
  2797. // else if (_UVE === null) { _UDE = null; break _UXE; }
  2798. // else { _UST += _UKE[i]; }
  2799. // }
  2800. // }
  2801. // }
  2802. // if (_UST && _UDE) {
  2803. // _UIE = this.getType(_UST);
  2804. // _UTF = (_UIE && !_UIE[2].trim());
  2805. // _UDE = this.gete(_UDE, _UIE ? _UIE[4] : "", _UTF ? "" : _UST, _UTF ? _UIE : null);
  2806. // } //添加元素
  2807. // }
  2808. // else {
  2809. // var _UDE = name || [];
  2810. // }
  2811. // if (_UDE) {
  2812. // this.osadd(_UDE);
  2813. // }
  2814. // //多个选择
  2815. // osel: function (UTP, UTV, UDE, UTE) {
  2816. // var i, j, _UKE, _UAE = [], _UCE = [], _UTP = "parentNode", _UTF = true;
  2817. // if (UTP) { //选择
  2818. // _UCE = [];
  2819. // for (i = 0; i < UDE.length; i++) {
  2820. // if (UDE[i][UTP] == UTV || UDE[i].getAttribute(UTP) == UTV || UTV === undefined) {
  2821. // _UCE.push(UDE[i]);
  2822. // }
  2823. // }
  2824. // }
  2825. // else {
  2826. // for (i = 0; i < UDE.length; i++) {
  2827. // for (j = 0; j < _UAE.length; j++) {
  2828. // if (UDE[i][_UTP] == _UAE[j][0]) {
  2829. // _UAE[j][1].push(UDE[i]); break;
  2830. // }
  2831. // _UAE.push[UDE[i][_UTP], [UDE[i]]];
  2832. // }
  2833. // } //选择的元素
  2834. // for (i = 0; i < _UAE.length; i++) { //选择
  2835. // _UKE = (UTE && _UAE[0][UTE]) ? _UAE[0][UTE](UTP) : SelectorElement(UTP, _UAE[0]); //获取
  2836. // for (j = 0; j < _UKE.length; j++) {
  2837. // if (!_UAE[1].length) { break; }
  2838. // ((i = _UAE[1].indexOf(_UKE[j])) > -1) && (_UCE.push(_UKE[j]), _UAE[1].splice(i, 1));
  2839. // }
  2840. // }
  2841. // }
  2842. // return _UCE;
  2843. // },
  2844. // //添加选择的元素
  2845. // osadd: function (UDE) {
  2846. // if (U.UF.Ut.isHtmlElement(UDE) || UDE.length == null) {
  2847. // UDE = [UDE];
  2848. // }
  2849. // for (var i = 0; i < UDE.length; i++) {
  2850. // if (UDE[i]) {
  2851. // this[this.length++] = UDE[i];
  2852. // (UDE[i].id) && (this[UDE[i].id] = UDE[i]);
  2853. // }
  2854. // }
  2855. // return this; //添加元素
  2856. // },
  2857. // //移除元素
  2858. // del: function (item, UTF) {
  2859. // var i, _UL = this.length; (item != null) && (this[item] = null);
  2860. // if (!UTF) {
  2861. // for (i = 0; i < _UL; i++) {
  2862. // if (this[i] == null) {
  2863. // if (this[i + 1]) {
  2864. // this[i] = this[i + 1];
  2865. // this[i + 1] = null;
  2866. // }
  2867. // else { delete this[i]; } this.length--;
  2868. // }
  2869. // }
  2870. // }
  2871. // },
  2872. // gete: function (UDE, UTP, UTS, USM) {//获取元素
  2873. // var i, _UCE, _UKE = []; (U.UF.Ut.isHtmlElement(UDE)) && (UDE = [UDE]);
  2874. // for (i = 0; i < UDE.length; i++) {
  2875. // _UCE = UDE[i]; _UCE = (!UTS && (USM[1].length >= USM[0].length - 1) && _UCE[UTP]) ? _UCE[UTP](USM[1]) : SelectorElement(UTS + (USM ? USM[0] : ""), _UCE);
  2876. // if (_UCE) { (U.UF.Ut.isHtmlElement(_UCE)) && (_UCE = [_UCE]); _UKE = _UKE.concat(U.UF.C.toArray(_UCE)); }
  2877. // }
  2878. // return _UKE;
  2879. // },
  2880. // getelement: function (UCE, UDE, USE) {//通过选择字符串获取元素
  2881. // var i, _UME = this.match, _UAE = UCE ? this.getType(UCE) : "", _UST = _UAE && _UAE[2], _UBE = U.UF.CI.getBrowser(), _UTF = _UME.pos.test(_UST) || _UME.child.test(_UST); _UBE = (_UBE.browser == "msie", _UBE.ver.toInt()); if (!_UAE && UCE) { return _UAE; }
  2882. // if (_UAE && USE !== true && (_UAE[0] == UCE || _UAE[2].indexOf(":") == -1) || (!_UTF || (!_UBE || _UBE > 8 || (UCE.indexOf("first-child") > -1 && _UBE > 6)))) { return UCE + " "; } //兼容添加选择值
  2883. // else {
  2884. // if (_UTF) { //过滤选择 //伪类选择
  2885. // _UST = _UST.split(":"); _UAE[0] += _UST[0]; UDE = this.gete(UDE, _UAE[4], USE, _UAE);
  2886. // for (i = 1; i < _UST.length; i++) { if (_UST[i] && !U.UF.Ut.isHtmlElement(UDE)) { UDE = this.selecte[_UST[i].split("(")[0]].call(this, UDE, _UST[i]); } }
  2887. // }
  2888. // else { UDE = this.gete(UDE, _UAE[4], "", _UAE); }; return UDE
  2889. // }
  2890. // },
  2891. // getType: function (UCE) {//获取格式
  2892. // var i, _UJE, _UME = this.match, _UAE = { "name": "getElementsByName", "id": "getElementById", "tagName": "getElementsByTagName", "className": "getElementsByClassName" };
  2893. // for (i in _UAE) { if ((_UJE = _UME[i].exec(UCE))) { return [_UJE[0], _UJE[1], UCE.replace(_UJE[0], ""), i, _UAE[i]]; } } //获取值
  2894. // },
  2895. // getValue: function (USE) { //通过选择字符串生成响应的选择
  2896. // var i, _UDE = {}, _UNC = this.common.nregular, _UC = this.common.regular, _UNCA = (USE.match(_UNC) || []), _UCA = USE.match(_UC) || ["*"];
  2897. // for (i = 0; i < _UCA.length; i++) { switch (_UNCA[j]) { case "!": _UDE["name"] = _UCA[j]; break; case "#": _UDE["id"] = _UCA[j]; break; case ".": _UDE["className"] = _UCA[j]; break; case "": case "&": _UDE["tagName"] = _UCA[j]; break; } } //获取
  2898. // return _UDE;
  2899. // },
  2900. ///**
  2901. //* 动画处理使用
  2902. //*
  2903. //* @param {string} 选择特殊字符串 包含# & []
  2904. //* @param {document} 搜索的层次
  2905. //* @param {document} 搜索的层次
  2906. //*/
  2907. //U.select.IsAnimate = function (UDE, item, UCL) {
  2908. // var i = item || 0, _UL = item == null ? UDE.length : item + 1, _UTF = arguments.length > 0;
  2909. // for (; i < _UL; i++) {
  2910. // if (_UTF) {
  2911. // UDE[i].__Animate__ = [UDE[i].style.cssText, UDE[i].className, UCL];
  2912. // }
  2913. // else {
  2914. // UDE[i].__Animate__ = null; delete UDE[i].__Animate__;
  2915. // }
  2916. // }
  2917. //};
  2918. ////通过元素的来获取
  2919. ///**
  2920. //* 使用正则表带是
  2921. //*
  2922. //* @param {string} 选择
  2923. //* @param {document} 搜索的层次
  2924. //*/
  2925. //$.getElementByString = function (name, el) {
  2926. // var _e, //这个是获取成功的函数
  2927. // _r = name.substring(0, 1), //获取特殊字符 . # 或者 ""
  2928. // _n = name.substring(1, name.length), //获取标签名
  2929. // _doc = el || document; //去除特殊字符后
  2930. // //这里是判断获取
  2931. // try { //这里利用基础的选择器选取数据
  2932. // switch (_r) {
  2933. // case "#": //根据id获取 因为id获取只能通过全局搜索 但是由于项目中有存在克隆的情况 会出现id不唯一的情况
  2934. // if (_doc == document && U.UF.S.EN.test(_n)) {
  2935. // _e = document.getElementById(_n);
  2936. // }
  2937. // break;
  2938. // case ".": //根据className获取
  2939. // if (U.UF.S.EN.test(_n)) {
  2940. // _e = _doc.getElementsByClassName(_n);
  2941. // }
  2942. // break;
  2943. // case "*": //根据className获取
  2944. // if (U.UF.S.EN.test(_n)) {
  2945. // _e = _doc.getElementsByTagName("*");
  2946. // }
  2947. // else {
  2948. // _e = document[_n];
  2949. // if (U.UF.CI.getBrowser().browser == "msie") {
  2950. // _e = document.getElementById(_n);
  2951. // }
  2952. // else {
  2953. // _e = document.embeds[_n];
  2954. // }
  2955. // }
  2956. // break;
  2957. // default: //标签的获取 //获取指定的元素
  2958. // if (U.UF.S.EN.test(name)) {
  2959. // _e = _doc.getElementsByTagName(name); //除去特殊字符的处理
  2960. // }
  2961. // break;
  2962. // }
  2963. // }
  2964. // catch (e) { }
  2965. // //判断是否获取元素成功,如果上面简单的选择去不成功,那么就通过其他的选择器方案去获取
  2966. // if (_e == null) {
  2967. // _e = U.UF.CP.SelectorElement(name, _doc); //其他选择的方式获取
  2968. // }
  2969. // return new $.SetMethod(_e); //把选择的元素添加方法
  2970. //}
  2971. ///**
  2972. //* 元素方法
  2973. //*
  2974. //* @param {object} 设置的域
  2975. //*/
  2976. //$.SetMethod = function (el) {
  2977. // el = el || [];
  2978. // //把所有获取出来的元素转化成数组,以便下面循环添加
  2979. // if (U.UF.Ut.isHtmlElement(el) || el.length == null) {
  2980. // el = [el];
  2981. // }
  2982. // //设置获取元素的长度
  2983. // this.length = el.length;
  2984. // //循环所有的元素,把元素设置到this里面,这样用户获取到的元素集就能通过this[0]或者this[id]去获取了
  2985. // for (var i = 0; i < el.length; i++) {
  2986. // //如果元素存在的处理
  2987. // this[i] = el[i];
  2988. // //如果元素有id,那么给返回值添加一个id的处理,以便返回值中有以id作为key的返回值
  2989. // if (el[i].id) {
  2990. // this[el[i].id] = el[i];
  2991. // }
  2992. // }
  2993. //}
  2994. ///**
  2995. //* 初始化编辑区域
  2996. //*
  2997. //* @param {string} 选择特殊字符串 包含# & []
  2998. //* @param {document} 搜索的层次
  2999. //*/
  3000. //U.select.GetSelector = function (UST) { //处理选择器
  3001. // if (UST == "#") { //getElementById 的选择符
  3002. // return " #";
  3003. // }
  3004. // else if (UST == "&") { //className联合的选择符
  3005. // return " ";
  3006. // }
  3007. // else if (UST.charAt(0) == "!") { //自定义参数的选择符
  3008. // return "[name='" + UST.substr(1) + "']";
  3009. // }
  3010. // else { //自定义参数使用
  3011. // return "[" + UST.substr(1).replace(U.select.prototype.match.ename, "='$1'") + "]";
  3012. // }
  3013. //};
  3014. // //正则匹配选择器
  3015. // match: {
  3016. // ename: /=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*/g, //[]选择符的使用
  3017. // escape: /(&|![\w\u00c0-\uFFFF\-]|\@[\w\u00c0-\uFFFF\-]+=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*)/g, //需要转义的正则
  3018. // nregular: /[>|+|~]/g, //伪类选择
  3019. // con: /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, //通用符的使用
  3020. // className: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, //className的定义
  3021. // id: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, //id的定义
  3022. // name: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/, //name选择符处理
  3023. // attr: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,
  3024. // tagName: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/, child: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/, //标签选择符处理
  3025. // pos: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/ //子元素选择器
  3026. // },
  3027. ///**
  3028. //* 初始化对话框实例
  3029. //* @returns {function} 回调函数初始化
  3030. //* @arguments 对象的 length 属性包含了传递给U.UF.UI.Dialog的参数的数目。
  3031. //*/
  3032. //U.UF.UI.Confirm.init = function (UDE) {
  3033. // var i, _UCE = ["title", "style", "confirmNoClose", "confirmYesClose", "content", "top"];
  3034. // if (UDE.length < 4) {
  3035. // var _UDOD = U.selectEl("#U_COF"); //创建一个ID为U_COF的对象
  3036. // UDE = ["消息提示", { "width": "300px" }, UDE[2], UDE[1],
  3037. // $$("div", {
  3038. // "className": "U_UI_OC",
  3039. // "style": {
  3040. // "textAlign": "center",
  3041. // "margin": "25px 0",
  3042. // "max-width": "400px",
  3043. // "word-wrap": "break-word",
  3044. // "max-height": "400px",
  3045. // "overflow": "auto"
  3046. // },
  3047. // innerHTML: UDE[0] ? UDE[0] : ""
  3048. // })];
  3049. // }
  3050. // for (i = 0; i < UDE.length; i++) {
  3051. // this[_UCE[i]] = UDE[i];
  3052. // }
  3053. // this.Create();
  3054. //}
  3055. //U.UF.UI.Confirm.init.prototype = {
  3056. // /**
  3057. // * 创建对话框的ui
  3058. // */
  3059. // Create: function () {
  3060. // var i, _UDE, _UDOD, _UDTD, _UDID, _UDSD, _UCB, _USE = {
  3061. // width: "auto",
  3062. // height: "auto"
  3063. // },
  3064. // _UEK = (this.style = this.style || {});
  3065. // _USE.forEach(function (UA, UB) {
  3066. // _UEK[UB] = _UEK[UB] || UA;
  3067. // });
  3068. // _UEK.zIndex = 9999;
  3069. // var _frag = $$("frag");
  3070. // _UDOD = $$("div",
  3071. // {
  3072. // "className": "U_UI_OB"
  3073. // });
  3074. // _UDTD = $$("div",
  3075. // {
  3076. // "className": "U_UI_OBA"
  3077. // }, _UDOD);
  3078. // this.No = $$("div", {
  3079. // "onclick": function () {
  3080. // this.confirmYesNo(this.confirmNoClose);
  3081. // }, // [(Array.isArray(this.confirmNoClose) ? this.confirmNoClose : [this.confirmNoClose]), [(_UCB = U.UF.C.apply(_UDE, [[_UDE.shut]]))]],
  3082. // "innerHTML": "取消",
  3083. // "style": { "display": this.Q == true ? "none" : "block" },
  3084. // "className": "U_UI_OBY"
  3085. // }, _UDTD);
  3086. // this.Yes = _UDSD = $$("div", {
  3087. // "onclick": function () {
  3088. // this.confirmYesNo(this.confirmYesClose);
  3089. // }, //[(Array.isArray(this.confirmYesClose) ? this.confirmYesClose : [this.confirmYesClose]), [_UCB]],
  3090. // "innerHTML": "确定",
  3091. // "className": "U_UI_OBY"
  3092. // }, _UDTD); //确定按钮
  3093. // _frag.appendChild(this.content);
  3094. // _frag.appendChild(_UDOD);
  3095. // this.form = _UDE = new U.UF.UI.form({
  3096. // id: "U_COF",
  3097. // top: this.top ? true : false,
  3098. // min: false,
  3099. // max: false,
  3100. // style: this.style,
  3101. // title: "<div class='UD_SYF_STI'>" + (this.title || "对话框") + "</div>",
  3102. // content: _frag,
  3103. // hst: {
  3104. // style: {
  3105. // padding: "0"
  3106. // }
  3107. // },
  3108. // draw: false
  3109. // }); //创建对话框
  3110. // // U.selectEl(_UDE.middle).append(_UDOD);
  3111. // _UDID = U.selectEl("input", _UDE.middle);
  3112. // for (i = _UDID.length - 1; i >= 0; i--) {
  3113. // if ("text,password".indexOf(_UDID[i].type) > -1) {
  3114. // _UDID[i].focus();
  3115. // _UDID[i].onkeypress = U.UF.C.apply(_UDID[i], function () {
  3116. // U.UF.C.returnkeylogin([{
  3117. // "obj": _UDSD,
  3118. // "event": 'onclick'
  3119. // }]);
  3120. // });
  3121. // }
  3122. // }
  3123. // return _UDE;
  3124. // },
  3125. // /**
  3126. // * 给对话框设置事件
  3127. // * @param {object} 窗体事件使用
  3128. // ----------[yes] {function} 确定的函数事件
  3129. // ----------[no] {function} 取消的函数事件
  3130. // */
  3131. // AddEvent: function (UDE) {
  3132. // for (var i in UDE) {
  3133. // if (UDE.hasOwnProperty(i)) {
  3134. // this[i].onclick = U.UF.C.apply(this.form, function () {
  3135. // this.form.shut();
  3136. // UDE[i]();
  3137. // }); //
  3138. // }
  3139. // }
  3140. // },
  3141. // /**
  3142. // * 给对话框设置事件
  3143. // * @param {object} 窗体事件使用
  3144. // */
  3145. // confirmYesNo: function (fun) {
  3146. // var _UCB = U.UF.C.apply(this.form, this.form.shut), //关闭窗体的函数
  3147. // _UTF = Array.isArray(fun) ? U.UF.C.apply(this, fun)() : (fun) && (fun.call(this));
  3148. // if (_UTF !== false) { //不允许关闭
  3149. // _UCB();
  3150. // }
  3151. // // [(Array.isArray(this.confirmNoClose) ? this.confirmNoClose : [this.confirmNoClose]), [(_UCB = U.UF.C.apply(_UDE, [[_UDE.shut]]))]]
  3152. // }
  3153. //}
  3154. /*U.UF.UI.Dialog = function (UDC, UDT, UDID, UDW, UDH) {
  3155. (!UDW || !UDH) && (UDW = "400px", UDH = "550px");
  3156. return U.UF.UI.form({
  3157. id: UDID ? UDID : null,
  3158. style: { "width": parseInt(UDW) + "px", "height": parseInt(UDH) + "px" },
  3159. content: UDC ? UDC : null, title: UDT ? UDT : "通知",
  3160. min: false,
  3161. max: false,
  3162. draw: false
  3163. });
  3164. }*/
  3165. //U.UF.UI.Confirm = function (UCT, UCBF, UCNF) {
  3166. // var _UDOD = U.selectEl("#U_COF"); //创建一个ID为U_COF的对象
  3167. // if (_UDOD[0]) { //判断是否有U_COF的子节点,没有则创建
  3168. // _UDOD.childs(0, 1).childs(0, 0).html(UCT); //设置内容
  3169. // _UDOD.Center(); //内容居中
  3170. // } else {
  3171. // U.selectEl(U.UF.UI.Dialog("消息提示", {}, UCNF ? U.UF.C.apply(this, [UCNF]) : null, UCBF ? U.UF.C.apply(this, [UCBF]) : null,
  3172. // $$("div", {
  3173. // "className": "U_UI_OC",
  3174. // "style": {
  3175. // "textAlign": "center",
  3176. // "padding": "25px 0 25px 0"
  3177. // },
  3178. // innerHTML: UCT
  3179. // })).Create()).addAttrArray({
  3180. // "id": "U_COF"
  3181. // })[0];
  3182. // U.UF.EV.stopBubble(); //阻止冒泡
  3183. // return _UDOD;
  3184. //}
  3185. /**
  3186. * 创建一个通知形式的对话框
  3187. *{str} UDC 对话框里面的内容。
  3188. *{str} UDT 标题
  3189. *{str} UDID 对话框id
  3190. *{int} UDW 宽度
  3191. *{int} UDH 高度
  3192. * @returns 返回ID为U_COF的对象
  3193. **/
  3194. //U.UF.UI.Dialog = function (UDC, UDT, UDID, UDW, UDH) {
  3195. // return new U.UF.UI.Dialog.init(arguments);
  3196. //}
  3197. //U.UF.EV.addPrototype(U.UF.UI.Dialog, U.UF.C.AddObj(U.UF.UI.Dialog, {
  3198. // init: function (UDE) { //添加对话框信息
  3199. // var i, _UCE = ["title", "style", "confirmNoClose", "confirmYesClose", "content", "SO"];
  3200. // for (i = 0; i < UDE.length; i++) {
  3201. // this[_UCE[i]] = UDE[i];
  3202. // }
  3203. // },
  3204. // Create: function () { //创建对话框
  3205. // var i, _UDE, _UDOD, _UDTD, _UDID, _UDSD, _UCB, _USE = {
  3206. // width: "auto",
  3207. // height: "auto",
  3208. // minWidth: "300px"
  3209. // },
  3210. // _UEK = (this.style = this.style || {});
  3211. // _USE.forEach(function (UA, UB) {
  3212. // _UEK[UB] = _UEK[UB] || UA;
  3213. // });
  3214. // _UEK.zIndex = 9999;
  3215. // _UDE = new U.UF.UI.form({
  3216. // top: true,
  3217. // min: false,
  3218. // max: false,
  3219. // style: this.style,
  3220. // title: "<div class='UD_SYF_STI'>" + (this.title || "对话框") + "</div>",
  3221. // content: this.content,
  3222. // hst: {
  3223. // style: {
  3224. // padding: "0"
  3225. // }
  3226. // }
  3227. // }); //创建对话框
  3228. // _UDOD = $$("div", {
  3229. // "className": "U_UI_OB"
  3230. // });
  3231. // _UDTD = $$("div", {
  3232. // "className": "U_UI_OBA"
  3233. // }, _UDOD);
  3234. // $$("div", {
  3235. // "onclick": [
  3236. // [this.confirmNoClose],
  3237. // [(_UCB = U.UF.C.apply(_UDE, _UDE.close))]
  3238. // ],
  3239. // "innerHTML": "取消",
  3240. // "className": "U_UI_OBY"
  3241. // }, _UDTD);
  3242. // _UDSD = $$("div", {
  3243. // "onclick": [
  3244. // [this.confirmYesClose],
  3245. // [_UCB]
  3246. // ],
  3247. // "innerHTML": "确定",
  3248. // "className": "U_UI_OBY"
  3249. // }, _UDTD); //确定按钮
  3250. // U.selectEl(_UDE.middle).append(_UDOD);
  3251. // _UDID = U.selectEl("input", _UDE.middle);
  3252. // for (i = _UDID.length - 1; i >= 0; i--) {
  3253. // if ("text,password".indexOf(_UDID[i].type) > -1) {
  3254. // _UDID[i].focus();
  3255. // _UDID[i].onkeypress = U.UF.C.apply(_UDID[i], function () {
  3256. // U.UF.C.returnkeylogin({
  3257. // "obj": _UDSD,
  3258. // "event": 'onclick'
  3259. // });
  3260. // });
  3261. // }
  3262. // }
  3263. // }
  3264. //}));
  3265. //U.UF.UI.Dialog.init.prototype = U.UF.UI.Dialog.prototype;
  3266. ///*
  3267. //弹出提示框,为了同时弹出多个提示框,为多份实例对象
  3268. //1、可以像java语言的用法,用new调用多份,例如: var a=new U.AlertB();
  3269. //2、也可以省略new的步骤,直接U.Alert(),出来的结果为多份。
  3270. //参数一:UTH 内容
  3271. //参数二:UTI 无确认按钮的显示时间
  3272. //参数三:是否带确认按钮
  3273. //返回值:
  3274. //*/
  3275. //U.Alert = function (UTH, UTI, IFQ) {
  3276. // IFQ === true ? new U.AlertA(UTH, IFQ) : new U.AlertB(UTH, UTI);
  3277. //}
  3278. ////为了多份实例,另外建立一个类似类的函数。
  3279. ////带有确定按钮的alert
  3280. //U.AlertA = function (UTH) {
  3281. // U.UF.UI.Confirm("提示框", {}, null, null, $$("div", {
  3282. // "style": {
  3283. // "textAlign": "center",
  3284. // "margin": "25px 10px 25px 10px",
  3285. // "max-width": "400px",
  3286. // "word-wrap": "break-word",
  3287. // "max-height": "400px",
  3288. // "overflow": "auto"
  3289. // },
  3290. // innerHTML: UTH
  3291. // }), true);
  3292. //}
  3293. ////自动消失的alert
  3294. //U.AlertB = function (UTH, UTI) {
  3295. // this.TI = ((UTI == null || UTI < 0) ? 1000 : UTI);
  3296. // var _UDPD = U.selectEl("body")[0];
  3297. // this.UDOD = U.selectEl($$("div", {
  3298. // "innerHTML": UTH,
  3299. // "className": "USalert",
  3300. // "style": { "cssText": "z-index:9999;left:" + ((US.width / 2 - 160) + _UDPD.scrollLeft) + "px;top:" + ((US.height / 2 - 100) + _UDPD.scrollTop) + "px" },
  3301. // "onclick": function () { this.DAlert(true); }
  3302. // }, U.selectEl("body")[0])).css({
  3303. // "top": US.height / 2 - 80 + _UDPD.scrollTop + "px"
  3304. // });
  3305. //}
  3306. ////为了减少内存消耗,把方法写在原型中。
  3307. //U.AlertB.prototype = {
  3308. // // init: function (UTH, UTI) {//创建alert "id": "USalert",
  3309. // // this.TI = ((UTI == null || UTI < 0) ? 1000 : UTI); this.UDOD = U.selectEl($$("div", { "innerHTML": UTH, "className": "USalert", "style": { "cssText": "z-index:9999;left:" + (US.width / 2 - 160) + "px;top:" + (US.height / 2 - 100) + "px" }, "onclick": function(){this.DAlert(true);} }, U.selectEl("body")[0])).animate({ "top": US.height / 2 - 80 + "px" }, 300, function(){this.AsynAmAlert();});
  3310. // // },
  3311. // AsynAmAlert: function () { //等待动画
  3312. // this.UTI = setTimeout(function () { this.AmAlert(); }, this.TI || 1000); //异步等待
  3313. // },
  3314. // AmAlert: function () { //结束动画
  3315. // if (this.UTI) { clearTimeout(this.UTI) };
  3316. // var _UDOD = U.selectEl(this.UDOD);
  3317. // if (_UDOD.Parent() == document.body) {
  3318. // _UDOD.animate({
  3319. // "top": _UDOD[0].offsetTop - 70 + "px"
  3320. // }, 100, function () { this.DAlert(); })
  3321. // };
  3322. // },
  3323. // DAlert: function (UTF) { //移除alert
  3324. // if (this.TI || UTF) {
  3325. // U.selectEl(this.UDOD).remove();
  3326. // }
  3327. // }
  3328. //}
  3329. //U.UF.EV.addPrototype(U.AlertB, {
  3330. // // init: function (UTH, UTI) {//创建alert "id": "USalert",
  3331. // // this.TI = ((UTI == null || UTI < 0) ? 1000 : UTI); this.UDOD = U.selectEl($$("div", { "innerHTML": UTH, "className": "USalert", "style": { "cssText": "z-index:9999;left:" + (US.width / 2 - 160) + "px;top:" + (US.height / 2 - 100) + "px" }, "onclick": function(){this.DAlert(true);} }, U.selectEl("body")[0])).animate({ "top": US.height / 2 - 80 + "px" }, 300, function(){this.AsynAmAlert();});
  3332. // // },
  3333. // AsynAmAlert: function () {//等待动画
  3334. // this.UTI = setTimeout(function(){this.AmAlert();}, this.TI || 1000); //异步等待
  3335. // },
  3336. // AmAlert: function () {//结束动画
  3337. // (this.UTI) && (clearTimeout(this.UTI)); var _UDOD = U.selectEl(this.UDOD);
  3338. // (_UDOD.Parent() == document.body) && (_UDOD.animate({ "top": US.height / 2 - 70 + "px" }, 100, function(){this.DAlert();}));
  3339. // },
  3340. // DAlert: function (UTF) { //移除alert
  3341. // if (this.TI || UTF) { U.selectEl(this.UDOD).remove(); }
  3342. // }
  3343. //}); //U.UF.C.AddObj(U.Alert,})
  3344. //U.Alert.prototype.init.prototype = U.Alert.prototype;
  3345. ////#region 分页控件
  3346. //Namespace.register("U.UF.P");
  3347. ////分页控件设置
  3348. ///*
  3349. //功能:传统分页控件,此函数将预先加载。以后需多做几种样式。
  3350. //参数一:UDE代表className为UD_SYFLB的div元素
  3351. //参数二:UOD代表聊天条数。
  3352. //参数三:UDP为整形1,默认第一页,其他数字,则为相应的显示页。
  3353. //参数四: UNP代表一页显示多少条数据
  3354. //参数五:USN为打印聊天信息的函数
  3355. //*/
  3356. //U.UF.P.PPage = function (UOD, USN, UNP, UDN, UCF, UTF) {
  3357. // var i, j, _USE, _UKE,
  3358. // _UME = U.UF.P.PPage.setPage(USN, UNP, UDN, UCF);
  3359. // if (U.UF.C.isFunction(UTF)) {
  3360. // _USE = UTF(this);
  3361. // _UKE = { //按钮对应事件处理
  3362. // "pre": { "onclick": function () {
  3363. // U.UF.P.PPage.exec(UNP - 1, _UBE[1], UOD, USN, UNP, UDN, UCF);
  3364. // }
  3365. // }, //上一页
  3366. // "next": { "onclick": function () {
  3367. // U.UF.P.PPage.exec(UNP + 1, _UBE[2], UOD, USN, UNP, UDN, UCF);
  3368. // }
  3369. // }, //下一页
  3370. // "frit": { "onclick": function () {
  3371. // U.UF.P.PPage.exec(1, _UBE[0], UOD, USN, UNP, UDN, UCF);
  3372. // }
  3373. // }, //第一页
  3374. // "last": { "onclick": function () {
  3375. // U.UF.P.PPage.exec(UNP + 1, _UBE[2], UOD, USN, UNP, UDN, UCF);
  3376. // }
  3377. // }, //最后一页
  3378. // "input": [
  3379. // {
  3380. // "onkeyup": [U.UF.C.returnkeylogin, [null, function () {
  3381. // U.UF.P.PPage.PageAchieve(UDE[3], UOD, USN, UNP, UDN, UCF, null, UDP);
  3382. // } ]],
  3383. // "onclick": function () {
  3384. // U.UF.P.PPage.PageAchieve(UDE[3], UOD, USN, UNP, UDN, UCF, null, UDP);
  3385. // }
  3386. // }
  3387. // ], //输入框 按钮
  3388. // "page": [] //页码按钮 变化样式 当前页的样式
  3389. // };
  3390. // for (i in _USE) {
  3391. // if (_USE.hasOwnProperty(i) && _UKE[i]) {
  3392. // if (Array.isArray(_UKE[i])) {
  3393. // for (j = 0; j < _UKE[i].length; j++) {
  3394. // }
  3395. // }
  3396. // else {
  3397. // for (j in _UKE[i]) {
  3398. // _USE[i][j] = _UKE[i][j]
  3399. // }
  3400. // }
  3401. // }
  3402. // }
  3403. // }
  3404. // else if (!UTF) { // 创建分页控件
  3405. // U.UF.P.PPage.CPage(_UME[0], UOD, _UME[1], UNP, USN, UDN, UCF)
  3406. // }
  3407. // return _UME;
  3408. //}
  3409. ////分页控件显示
  3410. //U.UF.P.PPage.CPage = function (UDE, UOD, UDP, UNP, USN, UDN, UCF, UDOD) {
  3411. // var i, _UN, _USP, _UDOD, _UDTD, _UDSD, _UDGD, _UTE, _UAE, _UCE = [], _UBE = [];
  3412. // for (i = 0; i < 4; i++) {
  3413. // switch (i) {
  3414. // case 0:
  3415. // _UTF = UNP != 1;
  3416. // break;
  3417. // case 1:
  3418. // _UTF = UNP > 1;
  3419. // break;
  3420. // case 2:
  3421. // _UTF = UNP < UDP;
  3422. // break;
  3423. // case 3:
  3424. // _UTF = UNP != UDP;
  3425. // break;
  3426. // }
  3427. // if (_UTF) {
  3428. // _UBE[i] = UDE[i == 3 ? i + 1 : i];
  3429. // } else {
  3430. // _UCE[i] = "O";
  3431. // }
  3432. // }
  3433. // if (UDOD) {
  3434. // //分页控件分页
  3435. // _UDTD = U.selectEl(UDOD).Child(),
  3436. // _UDAD = U.selectEl(_UDTD[0]).childs(),
  3437. // _UTE = [1, UNP - 1, UNP + 1, UDP];
  3438. // U.selectEl(_UDTD[1]).Child()[2].innerText = UNP + "页";
  3439. // _UAE = ["O", "T", "S", "F"];
  3440. // //跳页赋值
  3441. // for (i = 0; i < 4; i++) {
  3442. // _UDAD.addAttrArray({
  3443. // "onclick": _UCE[i] ? "" : function () {
  3444. // U.UF.P.PPage.exec(_UTE[i], _UBE[i], UOD, USN, UNP, UDN, UCF, UDOD);
  3445. // },
  3446. // "className": "U_Boom_Img_ys2017 UD_SYFYL" + _UAE[i] + (_UCE[i] || "")
  3447. // }, (UCF.isp && i > 1) ? i + 1 : i);
  3448. // }
  3449. // //页码赋值
  3450. // if (UCF.isp) {
  3451. // _UDAD[2].innerText = ""; //清空
  3452. // _UN = UNP > 5 ? UNP - 5 : 0; //当前页的范围
  3453. // _USP = UNP + UCF.isp > UDP ? UDP : UNP + UCF.isp;
  3454. // _UAE = U.UF.P.PPage.setPage([_UN, _USP], null, null, UCF); //获取点击事件
  3455. // for (i = _UN; i < _USP; i++) { //范围使用
  3456. // $$("div", { "onclick": function () {
  3457. // U.UF.P.PPage.exec(i + 1, _UAE[i - _UN], UOD, USN, UNP, UDN, UCF, UDOD);
  3458. // },
  3459. // "className": "UD_SYFYNO" + ((i + 1 == UNP) ? " UD_SYFYNOO" : ""),
  3460. // "innerHTML": i + 1
  3461. // }, _UDAD[2]);
  3462. // }
  3463. // }
  3464. // U.selectEl(_UDTD[1]).childs(0, 1).addAttrArray({
  3465. // "onclick": (_UTE = function () {
  3466. // U.UF.P.PPage.PageAchieve(UDE[3], UOD, USN, UNP, UDN, UCF, UDOD, UDP);
  3467. // })
  3468. // }, 8);
  3469. // U.selectEl("input", UDOD).addAttrArray({
  3470. // "onkeyup": function () {
  3471. // U.UF.C.returnkeylogin(null, _UTE);
  3472. // }
  3473. // });
  3474. // }
  3475. // else {
  3476. // _UDOD = $$("div", {
  3477. // "className": "UD_SYFY"
  3478. // });
  3479. // _UDTD = $$("div", {
  3480. // "className": "UD_SYFYL"
  3481. // }, _UDOD);
  3482. // $$("div", {
  3483. // "className": "U_Boom_Img_ys2017 UD_SYFYLO" + (_UCE[0] || ""),
  3484. // "onclick": _UCE[0] ? null : function () {
  3485. // U.UF.P.PPage.exec(1, _UBE[0], UOD, USN, UNP, UDN, UCF, _UDOD);
  3486. // },
  3487. // "title": "首页"
  3488. // }, _UDTD);
  3489. // $$("div", {
  3490. // "className": "U_Boom_Img_ys2017 UD_SYFYLT" + (_UCE[1] || ""),
  3491. // "onclick": _UCE[1] ? null : function () {
  3492. // U.UF.P.PPage.exec(UNP - 1, _UBE[1], UOD, USN, UNP, UDN, UCF, _UDOD);
  3493. // },
  3494. // "title": "上一页"
  3495. // }, _UDTD);
  3496. // if (UCF.isp && UDP > 0) {
  3497. // _UDSD = $$("div", { "className": "UD_SYFYN" }, _UDTD);
  3498. // _UN = UNP > 5 ? UNP - 5 : 0;
  3499. // _USP = UNP + UCF.isp > UDP ? UDP : UNP + UCF.isp;
  3500. // _UAE = U.UF.P.PPage.setPage([_UN, _USP], null, null, UCF); //获取点击事件
  3501. // for (i = _UN; i < _USP; i++) {
  3502. // $$("div", { "onclick": function () {
  3503. // U.UF.P.PPage.exec(i + 1, _UAE[i - _UN], UOD, USN, UNP, UDN, UCF, _UDOD);
  3504. // },
  3505. // "className": "UD_SYFYNO" + ((i + 1 == UNP) ? " UD_SYFYNOO" : ""),
  3506. // "innerHTML": i + 1
  3507. // }, _UDSD);
  3508. // }
  3509. // }
  3510. // $$("div", {
  3511. // "className": "U_Boom_Img_ys2017 UD_SYFYLS" + (_UCE[2] || ""),
  3512. // "onclick": _UCE[2] ? null : function () {
  3513. // U.UF.P.PPage.exec(UNP + 1, _UBE[2], UOD, USN, UNP, UDN, UCF, _UDOD);
  3514. // },
  3515. // "title": "下一页"
  3516. // }, _UDTD);
  3517. // $$("div", {
  3518. // "className": "U_Boom_Img_ys2017 UD_SYFYLF" + (_UCE[3] || ""),
  3519. // "onclick": _UCE[3] ? null : function () {
  3520. // U.UF.P.PPage.exec(UDP, _UBE[3], UOD, USN, UNP, UDN, UCF, _UDOD);
  3521. // },
  3522. // "title": "尾页"
  3523. // }, _UDTD);
  3524. // _UDTD = $$("div", {
  3525. // "className": "UD_SYFYR"
  3526. // }, _UDOD);
  3527. // _UDSD = $$("div", {
  3528. // "className": "UD_SYFYRL"
  3529. // }, _UDTD);
  3530. // $$("span", {
  3531. // "innerHTML": "到"
  3532. // }, _UDSD);
  3533. // _UDGD = $$("div", {}, _UDSD);
  3534. // $$("input", {
  3535. // "type": "text",
  3536. // "onkeyup": [U.UF.C.returnkeylogin, [null, function () {
  3537. // U.UF.P.PPage.PageAchieve(UDE[3], UOD, USN, UNP, UDN, UCF, _UDOD, UDP);
  3538. // } ]]
  3539. // }, _UDGD);
  3540. // $$("span", {
  3541. // "innerHTML": "页"
  3542. // }, _UDSD);
  3543. // $$("div", {
  3544. // "className": "UD_SYFYRZ",
  3545. // "innerHTML": "确定",
  3546. // "onclick": function () {
  3547. // U.UF.P.PPage.PageAchieve(UDE[3], UOD, USN, UNP, UDN, UCF, _UDOD, UDP);
  3548. // }
  3549. // }, _UDTD);
  3550. // $$("div", {
  3551. // "className": "UD_SYFYRR",
  3552. // "innerHTML": UNP + "页"
  3553. // }, _UDTD);
  3554. // UOD.appendChild(_UDOD);
  3555. // }
  3556. //}
  3557. ////函数执行
  3558. //U.UF.P.PPage.exec = function (UTF, UFN, UOD, USN, UNP, UDN, UCF, UDOD) {
  3559. // if (UFN != null) {
  3560. // var _UDE = U.UF.P.PPage.main(UOD, USN, UTF, UDN, UCF, true);
  3561. // U.UF.P.PPage.CPage(_UDE[0], UOD, Math.ceil(USN / UDN), UTF, USN, UDN, UCF, UDOD);
  3562. // UFN();
  3563. // }
  3564. //}
  3565. ////输入框设置
  3566. //U.UF.P.PPage.PageAchieve = function (UFN, UOD, USN, UNP, UDN, UCF, UDOD, UDP) {
  3567. // var _UN = U.selectEl(event.srcElement).parentElement().find("input")[0].value;
  3568. // if (U.UF.S.Number.test(_UN)) {
  3569. // _UN = _UN.toInt();
  3570. // if (_UN <= UDP && _UN > 0) {
  3571. // if (UNP != _UN) { U.UF.P.PPage.exec(_UN, UFN, UOD, USN, UNP, UDN, UCF, UDOD) };
  3572. // }
  3573. // else {
  3574. // parent.U.Alert("输入范围异常!");
  3575. // }
  3576. // }
  3577. // else {
  3578. // parent.U.Alert("无效输入!");
  3579. // }
  3580. //};
  3581. ////设置页数函数
  3582. //U.UF.P.PPage.setPage = function (USN, UNP, UDN, UCF) {
  3583. // var i, j, k, _USE, _UKE, _UGE, _UME = [],
  3584. // _UCE = UCF["fun"], //回调函数
  3585. // _UIP = UCF["page"]; //当前使用页数;
  3586. // if (Array.isArray(USN)) {
  3587. // for (i = USN[0]; i < USN[1]; i++) {
  3588. // _UGE = [];
  3589. // for (j = 0; j < _UCE.length; j++) {
  3590. // _USE = _UCE[j][1];
  3591. // if (_UIP[j] != null) {
  3592. // _USE = _USE.concat();
  3593. // _USE[_UIP[j]] = i + 1;
  3594. // }
  3595. // _UGE.push[_UCE[j][0], _USE];
  3596. // }
  3597. // _UME.push(_UGE);
  3598. // }
  3599. // return _UME;
  3600. // }
  3601. // else { //添加事件处理
  3602. // var _UDP = Math.ceil(USN / UDN), //总页数
  3603. // _UDE = [1, UNP - 1, UNP + 1, "$(event.srcElement).parentElement().find('input')[0].value", _UDP]; //前一页后一页处理
  3604. // for (i = 0; i < _UDE.length; i++) {
  3605. // _UGE = [];
  3606. // for (j = 0; j < _UCE.length; j++) {
  3607. // _USE = _UCE[j][1];
  3608. // if (_UIP[j] != null) {
  3609. // _USE = _USE.concat();
  3610. // _USE[_UIP[j]] = _UDE[i];
  3611. // }
  3612. // _UGE.push[_UCE[j][0], _USE];
  3613. // }
  3614. // _UME.push(_UGE);
  3615. // }
  3616. // return [_UME, _UDP];
  3617. // }
  3618. //}
  3619. ////控件设置
  3620. //U.UF.P.PPage.main = function (UOD, USN, UNP, UDN, UCF, UTF) {
  3621. // var i, j, _USE, _UKE,
  3622. // _UME = U.UF.P.PPage.setPage(USN, UNP, UDN, UCF);
  3623. // if (U.UF.C.isFunction(UTF)) {
  3624. // _USE = UTF(this);
  3625. // _UKE = { //按钮对应事件处理
  3626. // "pre": { "onclick": function () {
  3627. // U.UF.P.PPage.exec(UNP - 1, _UBE[1], UOD, USN, UNP, UDN, UCF);
  3628. // }
  3629. // }, //上一页
  3630. // "next": { "onclick": function () {
  3631. // U.UF.P.PPage.exec(UNP + 1, _UBE[2], UOD, USN, UNP, UDN, UCF);
  3632. // }
  3633. // }, //下一页
  3634. // "frit": { "onclick": function () {
  3635. // U.UF.P.PPage.exec(1, _UBE[0], UOD, USN, UNP, UDN, UCF);
  3636. // }
  3637. // }, //第一页
  3638. // "last": { "onclick": function () {
  3639. // U.UF.P.PPage.exec(UNP + 1, _UBE[2], UOD, USN, UNP, UDN, UCF);
  3640. // }
  3641. // }, //最后一页
  3642. // "input": [
  3643. // { "onkeyup": [U.UF.C.returnkeylogin, [null, function () {
  3644. // U.UF.P.PPage.PageAchieve(UDE[3], UOD, USN, UNP, UDN, UCF, null, UDP)
  3645. // } ]]
  3646. // },
  3647. // { "onclick": function () {
  3648. // U.UF.P.PPage.PageAchieve(UDE[3], UOD, USN, UNP, UDN, UCF, null, UDP);
  3649. // }
  3650. // }], //输入框 按钮
  3651. // "page": [] //页码按钮 变化样式 当前页的样式
  3652. // };
  3653. // for (i in _USE) {
  3654. // if (_USE.hasOwnProperty(i) && _UKE[i]) {
  3655. // if (Array.isArray(_UKE[i])) {
  3656. // for (j = 0; j < _UKE[i].length; j++) {
  3657. // }
  3658. // }
  3659. // else {
  3660. // for (j in _UKE[i]) {
  3661. // _USE[i][j] = _UKE[i][j]
  3662. // }
  3663. // }
  3664. // }
  3665. // }
  3666. // }
  3667. // else if (!UTF) { // 创建分页控件
  3668. // U.UF.P.PPage.CPage(_UME[0], UOD, _UME[1], UNP, USN, UDN, UCF)
  3669. // }
  3670. // return _UME;
  3671. //}
  3672. ////#endregion
  3673. ////#region
  3674. ////所有请求的ajax对象.
  3675. //U.A.allAjax = [];
  3676. ////#endregion
  3677. ///**
  3678. //* ajax初始化区域
  3679. //*
  3680. //* @param {string} 访问的地址
  3681. //* @param {array} 数据库地址,数据库名,存储过程名,存储过程参数的数组
  3682. //* @param {function} 回调函数
  3683. //* @param {array} 函数传参
  3684. //* @returns {object} ajax对象
  3685. //-----------这里的传参第一个为loading元素
  3686. //*/
  3687. //// 删除了一个参数 UCE
  3688. //U.A.Request = $.ajax = function (str, db, cb, arg) {
  3689. // //判断浏览器是否在线联网
  3690. // if (navigator.onLine) {
  3691. // var _ajax, //获取所有的传参,参数说明 win 当前域 、 UR ajax原对象 、 EOR 错误回调函数 、 fun 触发的函数地址 、 UDE 服务器传参 、 cb 回调函数 UPE 回调参数 、 UAE ajax对象属性 、 time当前使用时间
  3692. // _preajax = U.A.allAjax[U.A.allAjax.length - 1]; //ajax对象
  3693. // //判断ajax的时间差,防止恶意用户用循环向服务器不断发送请求,导致服务器瘫痪。
  3694. // //恶意请求大于了50次,则判断此用户有恶意攻击嫌疑。
  3695. // //计算两次ajax请求的时间差
  3696. // var _iftimespan;
  3697. // if (_preajax) {
  3698. // _iftimespan = new Date().getTime() - _preajax.date > 50;
  3699. // }
  3700. // //如果第一次ajax请求,或者ajax请求小于50次。或者2次发送请求的时间差大于50毫秒,都算没有恶意请求。
  3701. // if (!_preajax || _preajax.timespan < 50 || _iftimespan) { //连续发送禁止处理
  3702. // _ajax = new U.A.Request.init(arguments); //生成ajax对象
  3703. // //此处添加二级域名跨域,完全跨域,无跨域的分支。
  3704. // if (_ajax.handleDomain() == true) {
  3705. // return _ajax.create(); //创建连接,无_header分支
  3706. // // //添加有_header和无_header的两个分支。
  3707. // // if (_ajax.header) {
  3708. // // return _ajax.createHeader(_ajax.header); //创建连接,添加_header的目的是可以自己构建_header
  3709. // // } else {
  3710. // //
  3711. // // }
  3712. // }
  3713. // }
  3714. // else {
  3715. // return { "error": "application has been breached" }; //连接过多错误
  3716. // }
  3717. // } else { U.Alert("网络断开!"); }
  3718. //}
  3719. ///**
  3720. //* ajax初始化区域
  3721. //*
  3722. //* @param {array} ajax参数
  3723. //----------[0] 访问的地址
  3724. //----------[1] 服务器传参
  3725. //----------[2] 回调函数
  3726. //----------[3] 函数传参
  3727. //-----------这里的传参第一个为loading元素
  3728. //*/
  3729. //U.A.Request.init = function (arg) { //初始化Ajax对象
  3730. // /*
  3731. // 参数说明 win 当前域 、 UR ajax原对象 、 EOR 错误回调函数 、 fun 触发的函数地址 、 UDE 服务器传参 、 cb 回调函数
  3732. // UPE 回调参数 、 UAE ajax对象属性 、 time当前使用时间
  3733. // */
  3734. // //this.win = window; // win 当前域
  3735. // //ajax原对象{ TO: _UAE, D: this.time, N: this.fun, J: (_UOE && ((new Date().getTime() - _UOE.D) < 50)) ? _UOE.J + 1 : _UOE ? _UOE.J : 0 }
  3736. // //U.A.Request调用示例:U.A.Request("http://cd.1473.cn/php", ["mysql.1473.cn", "CloudSqlTestDb", "selectAllData"],function (r){})
  3737. // this.win = window; // win 当前域
  3738. // this.ajax = null; //ajax原对象{ TO: _UAE, D: this.time, N: this.fun, J: (_UOE && ((new Date().getTime() - _UOE.D) < 50)) ? _UOE.J + 1 : _UOE ? _UOE.J : 0 } 在函数createAjax里面最后一句话会发送此ajax
  3739. // this.err = null; // err error是系统关键字
  3740. // this.url = arg[0]; // url )。后台地址,形如"http://cd.1473.cn/php"。
  3741. // //ajax向后台请求的传参,其形式为:["mysql.1473.cn", "CloudSqlTestDb", "selectAllData","guid","str"],包含了数据库地址,数据库名,数据库存储过程名称,数据库参数...如果没有,则新建一个空数组,用法:var e = U.A.Request("http://cd.1473.cn/ss");.则e为后台返回的值。
  3742. // //UDE改成db
  3743. // this.db = arg[1] || [];
  3744. // this.cb = arg[2] || ""; //回调函数 cb
  3745. // this.cbparams = arg[3]; //回调参数 cbparams
  3746. // //调用方法:U.A.Request(US.AUTH,"UseStudioManage.AddToLoginLog", [US.userInfo.userid || US.EMPTYGUID, US.city.userAllLocation || "", US.ITID], function(){}, [], { type: "Get", "setAsyn": false, "timeout": 1, "CONTENT-TYPE": "application/json" }); //访问日志添加消息
  3747. // this.header = arg[4] || ""; //暂时没有用处。浏览器升级后对ajax的功能进行扩展,加入了"对head头部自定义修改"的功能。CONTENT-TYPE:application/x-www-form-urlencoded;charset=UTF-8.
  3748. // this.time = new Date(); //ajax生成时间..删除,时间保存在第二个参数ajax里面。
  3749. //}
  3750. //U.A.Request.init.prototype = {
  3751. // /**
  3752. // * Ajax对象创建
  3753. // *
  3754. // * @param {object} ajax属性
  3755. // */
  3756. // create: function () {
  3757. // // var _ajax,
  3758. // // _header = this.header || {}, //header头部设置
  3759. // // _ajaxtype = _header && _header.type ? _header.type : "GET", //请求格式
  3760. // // _isasync = U.UF.C.isFunction(this.cb), //默认是同步处理
  3761. // // _urlandparams = this.toAjaxFormat(), //生成请求参数 数据结构:
  3762. // // _url = _urlandparams[0], //连接的后台地址 形如"http://cd.1473.cn/php"
  3763. // // _db = _urlandparams[1]; //传参参数;
  3764. // // //get请求就直接拼接
  3765. // // if (_ajaxtype.toUpperCase() == "GET") {
  3766. // // _url += "?" + _db;
  3767. // // }
  3768. // // this.ajax = this.createAjax(_url); //生成ajax对象
  3769. // // _ajax = this.ajax.systemAjax; //获取系统ajax对象
  3770. // // _ajax.open(_ajaxtype, _url, _isasync); //设置ajax请求方法 url 是否异步
  3771. // // _header["CONTENT-TYPE"] = _header["CONTENT-TYPE"] || "application/x-www-form-urlencoded;charset=UTF-8"; //请求的type
  3772. // // //设置请求参数
  3773. // // for (i in _header) {
  3774. // // if ("type,setAsyn".indexOf(i) == -1) {
  3775. // // try {
  3776. // // if (i in _ajax) {
  3777. // // _ajax[i] = _header[i];
  3778. // // } else {
  3779. // // _ajax.setRequestHeader(i, _header[i]);
  3780. // // } //设置head头部
  3781. // // } catch (e) { }
  3782. // // }
  3783. // // }
  3784. // // // 指定服务器返回数据的MIME类型 firfox设置兼容
  3785. // // if (_ajax.overrideMimeType) {
  3786. // // if (_header["responseType"] == "blob") {
  3787. // // _ajax.overrideMimeType("text/plain; charset=x-user-defined");
  3788. // // } else {
  3789. // // _ajax.overrideMimeType("text/html");
  3790. // // }
  3791. // // }
  3792. // // //发送请求
  3793. // // _ajax.send(_db);
  3794. // // this.header ? "" : this.header
  3795. // var i,
  3796. // _url,
  3797. // _isdomain,
  3798. // _db,
  3799. // _ajax,
  3800. // _isasync,
  3801. // r;
  3802. // var _ajaxtype = _header.type; //用户请求类型,默认1473全部是post请求。
  3803. // var _urlandparams = this.toAjaxFormat(); //生成请求参数 数据结构:
  3804. // _url = _urlandparams[0]; //连接的后台地址 形如"http://cd.1473.cn/php"
  3805. // _db = _urlandparams[1]; //传参参数;
  3806. // //如果不传递回调函数,则为同步请求,示例:U.A.Request(US.AUTH,"UseStudioManage.AddToLoginLog", [US.userInfo.userid || US.EMPTYGUID, US.city.userAllLocation || "", US.ITID]);。返回json数据,一直等待服务器返回,如果服务器执行1分钟,页面停顿1分钟。
  3807. // if (U.UF.C.isFunction(this.cb)) {
  3808. // _isasync = true; //函数是否异步
  3809. // }
  3810. // //如果请求为get
  3811. // if (_ajaxtype.toUpperCase() == "GET") {
  3812. // _url += "?" + _db;
  3813. // }
  3814. // this.ajax = this.createAjax(_url); //生成ajax对象
  3815. // _ajax = this.ajax.systemAjax; //获取系统ajax对象
  3816. // _ajax.open(_ajaxtype, _url, _isasync); //设置ajax请求方法 url 是否异步
  3817. // _header["CONTENT-TYPE"] = _header["CONTENT-TYPE"] || "application/x-www-form-urlencoded;charset=UTF-8"
  3818. // //设置请求参数
  3819. // for (i in _header) {
  3820. // if ("type,setAsyn".indexOf(i) == -1) {
  3821. // try {
  3822. // if (i in _ajax) {
  3823. // _ajax[i] = _header[i];
  3824. // } else {
  3825. // _ajax.setRequestHeader(i, _header[i]);
  3826. // } //设置head头部
  3827. // } catch (e) { }
  3828. // }
  3829. // }
  3830. // // 指定服务器返回数据的MIME类型 firfox设置兼容
  3831. // if (_ajax.overrideMimeType) {
  3832. // if (_header["responseType"] == "blob") {
  3833. // _ajax.overrideMimeType("text/plain; charset=x-user-defined");
  3834. // } else {
  3835. // _ajax.overrideMimeType("text/html");
  3836. // }
  3837. // }
  3838. // //发送请求
  3839. // _ajax.send(_db);
  3840. // //得到服务器返回的值,一般为json,也可能为字符串。如果是异步,则走异步逻辑,否则走同步逻辑
  3841. // if (_isasync) {
  3842. // r = this["setAsyn"]();
  3843. // } else {
  3844. // r = this["getAjaxData"]();
  3845. // }
  3846. // //返回
  3847. // return _isdomain;
  3848. // },
  3849. // /**
  3850. // * Ajax对象创建
  3851. // *
  3852. // * @param {object} ajax属性
  3853. // */
  3854. // // create: function () {
  3855. // // var _header = {};
  3856. // // var i,
  3857. // // _url,
  3858. // // _isdomain,
  3859. // // _db,
  3860. // // _ajax,
  3861. // // _isasync,
  3862. // // r;
  3863. // // var _ajaxtype = "POST"; //用户请求类型,默认1473全部是post请求。
  3864. // // var _params = this.toAjaxFormat(); //生成请求参数 数据结构:
  3865. // // _url = _params[0]; //连接的后台地址 形如"http://cd.1473.cn/php"
  3866. // // _db = _params[1]; //传参参数;
  3867. // // //如果不传递回调函数,则为同步请求,示例:U.A.Request(US.AUTH,"UseStudioManage.AddToLoginLog", [US.userInfo.userid || US.EMPTYGUID, US.city.userAllLocation || "", US.ITID]);。返回json数据,一直等待服务器返回,如果服务器执行1分钟,页面停顿1分钟。
  3868. // // if (U.UF.C.isFunction(this.cb)) {
  3869. // // _isasync = true; //函数是否异步
  3870. // // }
  3871. // // //如果请求为get
  3872. // // if (_ajaxtype.toUpperCase() == "GET") {
  3873. // // _url += "?" + _db;
  3874. // // }
  3875. // // //设置请求超时时间
  3876. // // if (_isasync) {
  3877. // // // 给_header对象添加属性
  3878. // // _header.timeout = 90000;
  3879. // // _header.ontimeout = U.UF.C.apply(this, function () { this.asyn(); });
  3880. // // }
  3881. // // this.ajax = this.createAjax(_url); //生成ajax对象
  3882. // // _ajax = this.ajax.systemAjax; //获取系统ajax对象
  3883. // // _ajax.open(_ajaxtype, _url, _isasync); //设置ajax请求方法 url 是否异步
  3884. // // // 指定服务器返回数据的MIME类型 firfox设置兼容
  3885. // // _ajax.setRequestHeader("CONTENT-TYPE", "application/x-www-form-urlencoded;charset=UTF-8");
  3886. // // // 指定服务器返回数据的MIME类型 firfox设置兼容
  3887. // // if (_ajax.overrideMimeType) {
  3888. // // _ajax.overrideMimeType("text/html");
  3889. // // }
  3890. // // //发送请求
  3891. // // _ajax.send(_db);
  3892. // // //得到服务器返回的值,一般为json,也可能为字符串。
  3893. // // if (_isasync) {
  3894. // // r = this.setAsyn();
  3895. // // } else {
  3896. // // r = this.getAjaxData();
  3897. // // }
  3898. // // //返回
  3899. // // return r;
  3900. // // },
  3901. // /**
  3902. // * 根据请求的url判断域名是否存在跨域。三种跨域情况
  3903. // * @return
  3904. // */
  3905. // handleDomain: function () {
  3906. // //1、二级域名跨域,一般是a.1473.cn访问b.1473.cn。。可能是正常访问,也可能是iframe访问。,
  3907. // //2、完全跨域。www.a.com访问www.b.com。
  3908. // //3、没有跨域的情况
  3909. // var _isdomain, _url, _frame;
  3910. // var _params = this.toAjaxFormat(); //生成请求参数 数据结构:
  3911. // _url = _params[0]; //连接的后台地址 形如"http://cd.1473.cn/php"
  3912. // _isdomain = this.isDomain(_url);
  3913. // //1473跨域处理,判断是否是1473域,如果不是,则是外域调用
  3914. // if (_isdomain[0] && !_isdomain[1]) { // 判断是否是1473主域
  3915. // //如果是1473域的处理
  3916. // _frame = window.frames; //所有加载的域,对1473域下所有iframe进行循环,目的是找到可跨域的iframe。
  3917. // for (i = 0; i < _frame.length; i++) {
  3918. // try {
  3919. // if (!_url.indexOf(_frame[i].location.protocol + "//" + _frame[i].location.host)) { //找到指定的跨域
  3920. // return _frame[i].U.A.Request(this.url, this.db, this.cb, this.cbparams, this.header); //跨域获取
  3921. // }
  3922. // } catch (e) { }
  3923. // }
  3924. // }
  3925. // //完全跨域判断非1473的域名,
  3926. // else if (!_isdomain[1] && _url.indexOf("1473.cn") > -1 && U.selectEl("#U_Domain")[0]) { //其他域名跨域处理
  3927. // //其他站点,跨域形式访问:例如:http://a.com/ 在页面中调用U.A.Request(US.AUTH,"UseStudioManage.AddToLoginLog", [US.userInfo.userid || US.EMPTYGUID, US.city.userAllLocation || "", US.ITID]);
  3928. // this.goDomain(); //外站跨域调用
  3929. // return false;
  3930. // }
  3931. // return true;
  3932. // },
  3933. // //把传参格式转换为Ajax请求格式
  3934. // // 刑如:US.AUTH,"AddToLoginLog", [US.userInfo.userid , US.city.userAllLocation , US.ITID] 转换为下面的格式
  3935. // // 格式:"http://main.1473.cn/Uses.ashx",US.userInfo.userid || US.EMPTYGUID +"&" + US.city.userAllLocation || ""+ "&" + US.ITID, "http://main.1473.cn/Uses.ashx"(默认请求地址,如果第一个参数不在U.A.backAddress中,则使用第三个)
  3936. // /*
  3937. // * @return {array} 域、 加密参数
  3938. // */
  3939. // toAjaxFormat: function () {
  3940. // var _userinfo,
  3941. // _useurl,
  3942. // _url = this.url, //这个是请求参数
  3943. // _params = U.UF.C.urlEncode(this.db.concat()), //参数进行加密
  3944. // _source = _url.indexOf(":") > -1 && U.UF.C.isUrl(_url), //判断来源是否是链接
  3945. // _requestarr = _url.split("."); //这里拆分1473的请求
  3946. // //通过链接方式去访问
  3947. // // if (_source) {
  3948. // _useurl = _url;
  3949. // _params = "mode=" + _params; //设置传参
  3950. // // }
  3951. // // //相对路径访问方式
  3952. // // else {
  3953. // // _useurl = window.location;
  3954. // // _useurl = window.location ? _useurl.protocol + "//" + _useurl.host + "/" + _url : "./" + _url;
  3955. // // _params = "mode=" + _params;
  3956. // // }
  3957. // //请求中添加用户的信息
  3958. // try {
  3959. // //获取全局变量US
  3960. // if (parent.US) {
  3961. // _userinfo = top.US.userInfo; //获取用户的信息
  3962. // //如果用户的信息存在那么拼接用户的信息
  3963. // if (_userinfo && _userinfo.UserId) {
  3964. // _params += "&UserId=" + _userinfo.UserId + "&LoginId=" + _userinfo.LoginId;
  3965. // }
  3966. // //设置1473项目传参的id
  3967. // _params += "&PageId=" + US.pageId + "&SystemId=" + US.systemId;
  3968. // }
  3969. // }
  3970. // catch (e) { }
  3971. // //请求的地址,参数,请求的后台函数名
  3972. // return [_useurl, _params];
  3973. // },
  3974. // //完全跨域设置(此处非1473域名区域)处理区域
  3975. // goDomain: function () {
  3976. // // 获取回调参数
  3977. // var _loading = this.cbparams ? this.cbparams[0] : null;
  3978. // // 加载loading
  3979. // if (_loading) {
  3980. // U.UF.DL.loading(_loading[0])
  3981. // } else {
  3982. // U.UF.DL.loading(_loading, _loading[1])
  3983. // }
  3984. // // (_UDE) && (U.UF.DL.loading(_UDE[0] || _UDE, _UDE[1])); //设置loading
  3985. // // 页面消息传递
  3986. // new U.UF.EV.message({
  3987. // "obj": "#U_Domain",
  3988. // "Sender": true, //消息发送
  3989. // "me": U.UF.C.apply(this, function (_data) { //接受到跨域的ajax的回调处理
  3990. // var _dataarr = _data[2].split("=");
  3991. // //后台设置了cookie 前台同时响应
  3992. // if (_dataarr[1] == "") {
  3993. // U.UF.Cookie.del(_dataarr[0]);
  3994. // } else {
  3995. // U.UF.Cookie.set(_data[2]);
  3996. // }
  3997. // //document.wincookie = _data[2]; //记录cookie
  3998. // if (this.asyn) {//回调函数
  3999. // this.asyn(_data[0])
  4000. // }
  4001. // })
  4002. // }).post([this.url, this.db], "domain"); //跨域传参
  4003. // },
  4004. // /**
  4005. // * 获取链接地址
  4006. // *
  4007. // * @param {url} 连接地址
  4008. // -----------[0] 是否为1473域
  4009. // -----------[0] 是否为主域
  4010. // */
  4011. // isDomain: function (URL) {
  4012. // var _url;
  4013. // //用本地html打开网站时,没有window.location。
  4014. // if (window.location) {
  4015. // //获取当前域名地址栏,不包含目录结构。例如:
  4016. // _url = window.location.protocol + "//" + window.location.host; //当前域
  4017. // if (_url.indexOf("1473.cn") > -1 && URL.indexOf("1473.cn") > 0) {
  4018. // return [true, !URL.indexOf(_url)];
  4019. // } else {
  4020. // return [false, false];
  4021. // }
  4022. // }
  4023. // },
  4024. // /**
  4025. // * 创建Ajax对象
  4026. // *
  4027. // * @param {url} 连接地址
  4028. // * @returns {object} ajax对象
  4029. // */
  4030. // createAjax: function (url) {
  4031. // //从已经存在的ajax对象中找到已经结束请求的ajax对象,重新使用,避免ajax对象没有释放,重新创建的问题。
  4032. // //Ajax兼容
  4033. // var i, _ajax, _xhr, _url, _ajaxobj = U.A.allAjax,
  4034. // _preajax = _ajaxobj[_ajaxobj.length - 1],
  4035. // _xhr = ["Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP", "Microsoft.XMLHTTP"]; //ajax对象
  4036. // // 获取当前域名
  4037. // if (window.location) {
  4038. // _thisUrl = window.location.protocol + "//" + window.location.host;
  4039. // } else {
  4040. // _thisUrl = "";
  4041. // }
  4042. // //获取可以使用的Ajax对象
  4043. // for (i = 0; i < _ajaxobj.length; i++) { //在ajax里找到使用对象
  4044. // if ((_ajax = _ajaxobj[i].systemAjax).readyState == 4) {
  4045. // _ajax.onreadystatechange = function () { }; //设置回调为空
  4046. // _ajax.abort(); //停止
  4047. // return _ajaxobj[i];
  4048. // }
  4049. // }
  4050. // //这里创建Ajax对象
  4051. // try { _ajax = new window.XMLHttpRequest(); } //浏览器默认ajax对象
  4052. // catch (e) {
  4053. // for (i = 0; i < _xhr.length; i++) { //ie6-系列使用
  4054. // try {
  4055. // _ajax = new ActiveXObject(_xhr[i]);
  4056. // break;
  4057. // } catch (e) { }
  4058. // }
  4059. // }
  4060. // //h5创建跨域ajax
  4061. // if (url.indexOf(_thisUrl) == -1 && window.XDomainRequest) {
  4062. // _ajax = new window.XDomainRequest();
  4063. // }
  4064. // //疑似非法ajax请求次数记录
  4065. // var _timespan;
  4066. // //如果当前发送的ajax请求和上一次发送的ajax请求时间小于0.05秒。则判断为循环非法操作。
  4067. // if (_preajax && ((new Date().getTime() - _preajax.date) < 50)) {
  4068. // _timespan = _preajax.timespan + 1; //恶意攻击+1.
  4069. // } else {
  4070. // if (_preajax) {
  4071. // _timespan = _preajax.timespan;
  4072. // } else {
  4073. // _timespan = 0;
  4074. // }
  4075. // }
  4076. // //(_preajax && ((new Date().getTime() - _preajax.D) < 50)) ? _preajax.J + 1 : _preajax ? _preajax.J : 0;
  4077. // //生成ajax请求
  4078. // var ajax = {
  4079. // systemAjax: _ajax, //系统ajax new window.XMLHttpRequest(); //systemajax
  4080. // date: this.time, //当前时间 new Date(); //date
  4081. // fun: this.url, //向后台发送请求的函数名称。 //fun
  4082. // timespan: _timespan //与上一次发送Ajax请求的时间差距。 //timespan
  4083. // };
  4084. // _ajaxobj.push(ajax); //把这次的ajax请求记录到数组,目的是方便以后获取查询过的ajax。1、为了找错误,2、为了判断ajax的时间差,防止恶意用户用循环向服务器不断发送请求,导致服务器瘫痪。
  4085. // //return (_UDE[_UDE.length] = { TO: _UAE, D: this.time, N: this.fun, J: (_UOE && ((new Date().getTime() - _UOE.D) < 50)) ? _UOE.J + 1 : _UOE ? _UOE.J : 0 });
  4086. // return ajax;
  4087. // },
  4088. // //设置异步请求
  4089. // setAsyn: function () {
  4090. // var _ajax = this.ajax.systemAjax, //ajax对象
  4091. // _loading = this.cbparams, //回调参数 loading
  4092. // _isundefined = U.UF.Ut.isUndefined(_ajax.onload), //判断兼容问题
  4093. // _cb;
  4094. // if (_isundefined) {
  4095. // //回调函数设置
  4096. // _cb = U.UF.C.apply(this, function () {
  4097. // if (this.ajax.systemAjax.readyState == 4) {//已经加载成功
  4098. // this.asyn();
  4099. // }
  4100. // });
  4101. // }
  4102. // else {
  4103. // _cb = U.UF.C.apply(this, function () {
  4104. // this.ajax.systemAjax.status = 200; //设置成功状态
  4105. // this.asyn(); //调用跨域统一处理
  4106. // }); //回调函数设置
  4107. // }
  4108. // // 设置loading
  4109. // if (_loading && _loading[0]) {
  4110. // if (_loading[0][0]) {
  4111. // U.UF.DL.loading(_loading[0][0], _loading[0][1]);
  4112. // } else {
  4113. // U.UF.DL.loading(_loading[0], _loading[0][1]);
  4114. // }
  4115. // }
  4116. // // (_cbParams && _cbParams[0]) && (U.UF.DL.loading(_cbParams[0][0] || _cbParams[0], _cbParams[0][1]));
  4117. // //设置错误和异步请求
  4118. // // 设置ajax回调函数
  4119. // if (_isundefined) {
  4120. // _ajax.onreadystatechange = _cb;
  4121. // } else {
  4122. // _ajax.onload = _cb;
  4123. // }
  4124. // // 设置ajax错误时的处理
  4125. // try {
  4126. // _ajax.onerror = U.UF.C.apply(this, function () {
  4127. // this.ajax.systemAjax.status = 500; //设置错误为500
  4128. // this.asyn(); //异步处理
  4129. // });
  4130. // } catch (e) { }
  4131. // },
  4132. // /**
  4133. // * 服务器异步加载成功后,得到返回值,取消loading,然后回调.
  4134. // *
  4135. // * @param {boolean} 是否可以直接通过 不进行ajax流程判断
  4136. // * @param {string} 绕过ajax流程 传参
  4137. // */
  4138. // asyn: function (data) {
  4139. // try {
  4140. // //ajax请求成功该请求的请求数改成0
  4141. // if (this.ajax) {
  4142. // this.ajax.timespan = 0;
  4143. // }
  4144. // var _loading = this.cbparams, //loading 元素
  4145. // _data = this.getAjaxData(data), //ajax string 数据 生成 json数据集
  4146. // _timeSpan = (new Date()).getTime() - this.time.getTime(); //ajax总共耗时
  4147. // // 取消loading
  4148. // if (_loading && _loading[0]) {
  4149. // if (_loading[0][0]) {
  4150. // U.UF.DL.uploading(_loading[0][0]);
  4151. // } else {
  4152. // U.UF.DL.uploading(_loading[0]);
  4153. // }
  4154. // }
  4155. // // (_UPE && _UPE[0]) && (U.UF.DL.uploading(_UPE[0][0] || _UPE[0])); //取消loading
  4156. // //访问时间太长或者出现了错误 输出控制台
  4157. // if (_timeSpan > 1000 || _data.error) {
  4158. // (U.UF.C.console({ "T": _timeSpan, "N": this.url, "V": _data.error }));
  4159. // }
  4160. // //关闭连接
  4161. // if (_data.httpRequest.abort) {
  4162. // _data.httpRequest.abort();
  4163. // }
  4164. // //回调数据
  4165. // if (this.cb && _data.value !== null) {
  4166. // this.cb.call(this.win, _data)
  4167. // }
  4168. // } catch (e) { U.UF.C.console(e); }
  4169. // },
  4170. // /**
  4171. // * 生成数据
  4172. // *
  4173. // * @param {string} 绕过ajax流程 传参
  4174. // * @return {string} 数据参数
  4175. // */
  4176. // getAjaxData: function (data) {
  4177. // var _iserror, _ajax;
  4178. // //获取ajajx对象
  4179. // if (this.ajax) {
  4180. // _ajax = this.ajax.systemAjax;
  4181. // }
  4182. // else {
  4183. // _ajax = {};
  4184. // }
  4185. // var _ajaxattr = { httpRequest: _ajax, status: null, value: null, _context: this.cbparams }; //ajax对象使用
  4186. // //请求成功处理
  4187. // if (_ajax.status == 200) {
  4188. // _ajaxattr.value = data || this.getBackStrToJson(); //生成返回的参数
  4189. // }
  4190. // //错误处理.
  4191. // else {
  4192. // _ajaxattr.status = {
  4193. // "status": _ajax.status,
  4194. // "statusText": _ajax.statusText
  4195. // };
  4196. // }
  4197. // return _ajaxattr; //生成数据返回
  4198. // },
  4199. // /**
  4200. // * 得到后台返回的字符串,再把后台返回的字符串生成一个json对象
  4201. // *
  4202. // * @return {object} json值
  4203. // */
  4204. // getBackStrToJson: function () {
  4205. // var _ajax = this.ajax.systemAjax, //ajax对象
  4206. // _resXml = _ajax.responseXML; //xml对象
  4207. // //如果服务器返回的为xml对象
  4208. // if (_resXml) {
  4209. // _resXml = _resXml.xml
  4210. // }
  4211. // if (!_resXml) {
  4212. // _resXml = _ajax.responseText; //返回的值
  4213. // _resXml = U.UF.C.toJson(_resXml); //生成对象
  4214. // }
  4215. // return _resXml;
  4216. // }
  4217. //}
  4218. //#endregion
  4219. //#region
  4220. ///**
  4221. //* Flash上传初始化
  4222. //*
  4223. //*/
  4224. //U.UF.UP.FOnload = function () {
  4225. // try {
  4226. // var _obj = U.UF.UP.FTF; //当前上传的元素
  4227. // _obj["EL"].SetStage(_obj["WH"], _obj["FT"], _obj["GS"] || "*"); //加载插件初始化
  4228. // return true;
  4229. // }
  4230. // catch (e) {
  4231. // return false;
  4232. // }
  4233. //}
  4234. ///**
  4235. //* 上传的错误提示
  4236. //*
  4237. //* @param {error} 错误信息
  4238. //*/
  4239. //U.UF.UP.FLEX = function (err) {
  4240. // U.Alert(err);
  4241. // U.UF.C.console(err); //错误函数控制台处理
  4242. //}
  4243. ///**
  4244. //* 添加上传文件 上传文件的显示
  4245. //*
  4246. //* @param {error} 错误信息
  4247. //*/
  4248. //U.UF.UP.FLAdd = function (UDE, UL) {
  4249. // var _UDOD = U.UF.UP.FTF.EL, //当前上传的元素
  4250. // _UDID = _UDOD.ID || _UDOD.name;
  4251. // if (U.UF.UP.FTF[_UDID] && U.UF.UP.FTF[_UDID].FT && U.UF.UP.FTF[_UDID].FT["select"]) {
  4252. // U.UF.UP.FTF[_UDID].FT["select"](UDE, UL);
  4253. // }
  4254. //}
  4255. ////上传所有文件完毕
  4256. //U.UF.UP.FLACP = function (UFL) {
  4257. // var _UDOD = U.UF.UP.FTF.EL,
  4258. // _UDID = _UDOD.ID || _UDOD.name;
  4259. // if (U.UF.UP.FTF[_UDID] && U.UF.UP.FTF[_UDID].FT && U.UF.UP.FTF[_UDID].FT["AFCP"]) {
  4260. // U.UF.UP.FTF[_UDID].FT["AFCP"](UFL);
  4261. // }
  4262. //}
  4263. ////上传的进度条
  4264. //U.UF.UP.FLJD = function (UDE, FID) {
  4265. // var _UDOD = U.UF.UP.FTF.EL,
  4266. // _UDID = _UDOD.ID || _UDOD.name;
  4267. // if (U.UF.UP.FTF[_UDID] && U.UF.UP.FTF[_UDID].FT && U.UF.UP.FTF[_UDID].FT["progress"]) {
  4268. // U.UF.UP.FTF[_UDID].FT["progress"](UDE, FID);
  4269. // }
  4270. //}
  4271. ////上传文件成功同时服务端返回了数据
  4272. //U.UF.UP.FSLCP = function (UDAT, FID) {
  4273. // var _UDOD = U.UF.UP.FTF.EL,
  4274. // _UDID = _UDOD.ID || _UDOD.name;
  4275. // if (U.UF.UP.FTF[_UDID] && U.UF.UP.FTF[_UDID].FT && U.UF.UP.FTF[_UDID].FT["getData"]) {
  4276. // U.UF.UP.FTF[_UDID].FT["getData"](UDAT, FID);
  4277. // }
  4278. //}
  4279. ////上传文件判断是否存在
  4280. //U.UF.UP.IsFUp = function (UWJL, FID) {
  4281. // var _UDOD = U.UF.UP.FTF.EL,
  4282. // _UDID = _UDOD.ID || _UDOD.name;
  4283. // if (U.UF.UP.FTF[_UDID] && U.UF.UP.FTF[_UDID].FT && U.UF.UP.FTF[_UDID].FT["FUP"]) {
  4284. // U.UF.UP.FTF[_UDID].FT["FUP"](UWJL, FID);
  4285. // }
  4286. //}
  4287. ////上传单个文件完毕
  4288. //U.UF.UP.FLCP = function (data) {
  4289. // U.Alert("等待服务器的响应...");
  4290. //}
  4291. //#endregion
  4292. /**
  4293. * 设置文件下载
  4294. *
  4295. * @param {string} 上传成功回调函数
  4296. * @param {string} 上传成功回调函数
  4297. */
  4298. //U.UF.UP.Down = function (str1, str2) {
  4299. // if ("createElementNS" in document) { //html5 文件另存为
  4300. // if (!str2) {
  4301. // str2 = document.documentElement.outerHTML
  4302. // };
  4303. // var url2,
  4304. // _url1 = window.URL || window.webkitURL || window,
  4305. // _str = new Blob[str2];
  4306. // url2 = document.createElementNS("http://www.w3.org/1999/xhtml", "a");
  4307. // url2.href = _url.createObjectURL(_str);
  4308. // url2.download = str1;
  4309. // U.UF.EV.simulateMouseClicks(url2, "click");
  4310. // }
  4311. // else { //IE文件另存为
  4312. // if (str2) {
  4313. // var _iframe = $$("iframe",
  4314. // {
  4315. // "display": "none"
  4316. // });
  4317. // U.UF.C.iframeSameDomain(_iframe, str2, function () {
  4318. // _iframe.contextWindow.document.execCommand("SaveAs");
  4319. // });
  4320. // }
  4321. // else {
  4322. // document.execCommand("SaveAs");
  4323. // } //当前文档保存
  4324. // }
  4325. //}
  4326. /**
  4327. * 根据条件,对json数组进行排序
  4328. *
  4329. * @param {array} 需要进行选择的json数组。
  4330. * @param {number} 排序方式 1正序 -1倒序
  4331. * @return {string} 排序的条件,json数组中的键名
  4332. 实例一
  4333. var a = [{id:3},{id:1},{id:2}];
  4334. U.Json.sort(a,"id");
  4335. */
  4336. U.Json.sort = function (arr, key, isreverse) { //排序
  4337. isreverse = isreverse || 1;
  4338. arr = arr.sort(function (obj1, obj2) {
  4339. var _value,
  4340. _type, //比较大小的类型
  4341. _isobj = U.UF.C.isObject(obj1); //判断比较的大小是否为对象
  4342. //对象的大小匹配
  4343. if (_isobj) {
  4344. _type = U.UF.C.getType(obj1[key] || obj2[key]).capitalizeFirstLetter(); //由于类型的值有可能是null或者是undefined,判断两种比较安全
  4345. _value = U.UF.Ut["compare" + _type](obj1[key], obj2[key]); //得到匹配的大小
  4346. }
  4347. //非对象的处理方式 U.UF.Ut.compare+type 是一些列的对象比较大小的方法
  4348. else {
  4349. _type = U.UF.C.getType(obj1).capitalizeFirstLetter();
  4350. _value = U.UF.Ut["compare" + _type](obj1, obj2); //得到匹配的大小
  4351. }
  4352. //isreverse 用于判断倒序还是正序,如果是-1就是倒序,如果是1就是正序
  4353. _value = isreverse * (_value ? 1 : -1);
  4354. return _value;
  4355. });
  4356. return arr;
  4357. }
  4358. /**
  4359. * 判断是否为错误
  4360. *
  4361. * @param {Error} 错误对象值
  4362. * @return {boolean} 是否为错误类型
  4363. */
  4364. U.UF.Ut.isError = function (UDE) {
  4365. return U.UF.C.isObject(UDE) && U.UF.C.objectToString(UDE) == "[object Error]";
  4366. }
  4367. /**
  4368. * 判断是否为正则
  4369. *
  4370. * @param {RegExp} 正则值
  4371. * @return {boolean} 是否为RegExp
  4372. */
  4373. U.UF.Ut.isRegExp = function (UDE) {
  4374. return U.UF.C.isObject(UDE) && U.UF.C.objectToString(UDE) == "[object RegExp]";
  4375. }
  4376. /**
  4377. * 判断是否为Undefined
  4378. *
  4379. * @param {number} 判断数组是否有值
  4380. * @return {boolean} 是否为number
  4381. */
  4382. U.UF.Ut.isUndefined = function (UDE) {
  4383. return (UDE === void 0);
  4384. }
  4385. /**
  4386. * 判断是否是无限循环数字
  4387. *
  4388. * @param {number} 判断数组是否有值
  4389. * @return {boolean} 是否为number
  4390. */
  4391. U.UF.Ut.isFinite = function (UDE) {
  4392. return !isNaN(parseFloat(UDE)) && isFinite(UDE);
  4393. }
  4394. /**
  4395. * 判断是否为NaN
  4396. *
  4397. * @param {array} 判断数组是否有值
  4398. * @return {boolean} 是否为number
  4399. */
  4400. U.UF.Ut.isNaN = function (UDE) {
  4401. return UDE.toString() == 'NaN'
  4402. }
  4403. /**
  4404. * 判断是否为字符串数字
  4405. *
  4406. * @param {array} 判断数组是否有值
  4407. * @return {boolean} 是否为number
  4408. */
  4409. U.UF.C.isStringInt = function (UDE) {
  4410. return U.UF.C.isNumber(UDE) || U.UF.S.Num.test(UDE);
  4411. }
  4412. /**
  4413. * 判断是否为空
  4414. *
  4415. * @param {object} 判断内容是否为空
  4416. * @return {boolean} 是否为null
  4417. */
  4418. U.UF.Ut.isNull = function (UDE) {
  4419. return UDE === null;
  4420. }
  4421. /**
  4422. * 判断是否为bool
  4423. *
  4424. * @param {array} 判断数组是否有值
  4425. * @return {boolean} 是否为boolean值
  4426. */
  4427. U.UF.Ut.isBoolean = function (UDE) {
  4428. return typeof UDE === "boolean";
  4429. }
  4430. /**
  4431. * 判断数组是否可用
  4432. *
  4433. * @param {array} 判断数组是否有值
  4434. * @return {boolean} 是否为有值数组
  4435. */
  4436. U.UF.Ut.isArrayLike = function (UDE) {
  4437. return Array.isArray(UDE) && UDE.length > 0;
  4438. }
  4439. /**
  4440. * 判断是否支持播放
  4441. *
  4442. * @param {string} 指定的格式 mp3、mpo4
  4443. * @return {number} 是否支持改格式播放
  4444. -----------[0] 不支持
  4445. -----------[1] 支持
  4446. */
  4447. U.UF.C.isPlay = function (type) {
  4448. var _video = U.MD.V.vi(); //获取h5视频播放对象
  4449. //判断浏览器是否支持video标签
  4450. if (_video) {
  4451. if (_video.isPlay(type, $$("video"))) {
  4452. return 1;
  4453. };
  4454. return 0;
  4455. }
  4456. return _video;
  4457. }
  4458. //#region RadioList
  4459. //选择框使用
  4460. U.UF.UI.RadioList = function (UDOD, UDE, cb) {
  4461. return new U.UF.UI.RadioList.init(UDOD, UDE, cb);
  4462. }
  4463. U.UF.EV.addPrototype(U.UF.UI.RadioList,
  4464. U.UF.UI.RadioList.init = function (UDOD, UDE, cb) {
  4465. this.UDTD;
  4466. this.UDE = UDE;
  4467. this.UDOD = UDOD;
  4468. this.cb = cb;
  4469. this.create(UDOD);
  4470. },
  4471. U.UF.UI.RadioList.create = function (UDOD) {
  4472. var i, _UDTD, _UDE = this.UDE,
  4473. _UN = Guid.guidNoDash(),
  4474. _UDFD = $$("frag");
  4475. if (_UDE) {
  4476. UDOD.innerText = "";
  4477. for (i in UDE) {
  4478. if (UDE.hasOwnProperty(i)) {
  4479. _UDTD = $$("div", {
  4480. "innerHTML": UDE[i],
  4481. "style": {
  4482. "cssText": "margin-left:5px;"
  4483. }
  4484. }, _UDFD);
  4485. _UDTD = $$("input", {
  4486. "type": "radio",
  4487. "value": i,
  4488. "name": _UN,
  4489. "checked": i ? false : true,
  4490. "onclick": function () { this.chang(); }
  4491. }, _UDTD);
  4492. if (!i) { this.UDTD = _UDTD };
  4493. }
  4494. }
  4495. UDOD.appendChild(_UDFD);
  4496. } else {
  4497. _UDTD = U.selectEl("input[type='radio']", UDOD).addAttrArray({
  4498. "name": _UN,
  4499. "onclick": function () { this.chang(); }
  4500. });
  4501. for (i = 0; i < _UDTD.length; i++) {
  4502. if (_UDTD[i].checked) {
  4503. this.UDTD = _UDTD[i];
  4504. break;
  4505. }
  4506. }
  4507. } //设置相同的name
  4508. },
  4509. U.UF.UI.RadioList.value = function () {
  4510. return this.UDTD.value;
  4511. }, //当前聚焦元素的值
  4512. U.UF.UI.RadioList.element = function () {
  4513. return this.UDTD;
  4514. }, //当前聚焦元素
  4515. U.UF.UI.RadioList.chang = function () {
  4516. var _UDOD = event.srcElement;
  4517. if (_UDOD != this.UDTD) { this.UDTD = _UDOD, (this.cb) && (this.cb(_UDOD)) };
  4518. }
  4519. //改变事件
  4520. // U.UF.C.AddObj(U.UF.UI.RadioList, {
  4521. // init: function (UDOD, UDE, cb) {
  4522. // this.UDTD;
  4523. // this.UDE = UDE;
  4524. // this.UDOD = UDOD;
  4525. // this.cb = cb;
  4526. // this.create(UDOD);
  4527. // },
  4528. // //生成RadioList
  4529. // create: function (UDOD) {
  4530. // var i, _UDTD, _UDE = this.UDE,
  4531. // _UN = Guid.guidNoDash(),
  4532. // _UDFD = $$("frag");
  4533. // if (_UDE) {
  4534. // UDOD.innerText = "";
  4535. // for (i in UDE) {
  4536. // if (UDE.hasOwnProperty(i)) {
  4537. // _UDTD = $$("div", {
  4538. // "innerHTML": UDE[i],
  4539. // "style": {
  4540. // "cssText": "margin-left:5px;"
  4541. // }
  4542. // }, _UDFD);
  4543. // _UDTD = $$("input", {
  4544. // "type": "radio",
  4545. // "value": i,
  4546. // "name": _UN,
  4547. // "checked": i ? false : true,
  4548. // "onclick": function () { this.chang(); }
  4549. // }, _UDTD);
  4550. // if (!i) { this.UDTD = _UDTD };
  4551. // }
  4552. // }
  4553. // UDOD.appendChild(_UDFD);
  4554. // } else {
  4555. // _UDTD = U.selectEl("input[type='radio']", UDOD).addAttrArray({
  4556. // "name": _UN,
  4557. // "onclick": function () { this.chang(); }
  4558. // });
  4559. // for (i = 0; i < _UDTD.length; i++) {
  4560. // if (_UDTD[i].checked) {
  4561. // this.UDTD = _UDTD[i];
  4562. // break;
  4563. // }
  4564. // }
  4565. // } //设置相同的name
  4566. // },
  4567. // value: function () {
  4568. // return this.UDTD.value;
  4569. // }, //当前聚焦元素的值
  4570. // element: function () {
  4571. // return this.UDTD;
  4572. // }, //当前聚焦元素
  4573. // chang: function () {
  4574. // var _UDOD = event.srcElement;
  4575. // if (_UDOD != this.UDTD) { this.UDTD = _UDOD, (this.cb) && (this.cb(_UDOD)) };
  4576. // } //改变事件
  4577. ));
  4578. U.UF.UI.RadioList.init.prototype = U.UF.UI.RadioList.prototype;
  4579. //#endregion