U.CD.OutApp.js 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. 
  2. Namespace.register("U.CD.OU"); //注册引用1473主项目的js,添加交友等功能。
  3. //注意事项
  4. //1、两边的htmlbody元素定义需要一致
  5. //2、需要重载主项目的window.onload以及以下的几个函数。重载方法在下面有记载。
  6. //获取1473主项目body中的所有内容,追加到本项目末尾,以调用硬盘,好友等功能。
  7. U.CD.OU.Get1473 = function () {
  8. //首先创建一个名为US_M_IF的iframe
  9. $$("iframe", { "id": "US_M_IF", "name": "US_M_IF", "style": { "cssText": "width:0px;height:0px;"} }, document.body);
  10. //再创建一个名为US_M_DIV的div用于复制节点
  11. var m = $$("div", { "id": "US_M_DIV", "style": { "cssText": "width:0px; height:100%; position:absolute; top:0px; left:0px; overflow:hidden;"} }, document.body);
  12. var i = $("#US_M_IF")[0]; i.src = "http://www.1473.cn";
  13. U.MD.IframeLoad(i, [[U.CD.OU.Get1473Asyn, ([i, m])]]);
  14. }
  15. //获取到1473主项目后回调处理
  16. U.CD.OU.Get1473Asyn = function (f, m) {
  17. //循环克隆添加1473主项目的节点到编程平台,把html元素对应拷贝到编程平台,这种方法不可行
  18. //采用innerHTML的方式才能移除掉iframe中的信息。否则,事件会失效。
  19. //var m = $("#US_M_IF")[0];
  20. m.innerHTML = f.contentWindow.document.body.innerHTML;
  21. document.body.removeChild(f); //移除了此iframe后所有事件丢失了。
  22. U.CD.OU.RemoveJS(m); //移除掉很多不需要的js和注释
  23. U.D.FLoad(); //重新执行UD.js中的window.onload。
  24. U.CD.OU.Dis1473Ele(); //把需要显示的元素加载到body中
  25. //添加本项目window.resize事件到主项目window.resize,window.onload和window.onresize是同名函数。只能这样处理
  26. //但1473主项目的window.onreisze函数脱离环境运行不成功,等会再研究
  27. U.M.AddEvent("resize", window, U.CD.LO.SetWH);
  28. }
  29. U.CD.OU.RemoveJS = function (m) {
  30. //移除掉广告js,因为本项目中已经有了,移除时只能从大到小循环
  31. var d = m.childNodes, i;
  32. for (i = d.length - 1; i > 0; i--) {
  33. if (d[i].tagName == "SCRIPT" || d[i].tagName == "!") {
  34. //如果是QQ登录Web登录,则移动到body末尾。这种方式出错,改为Html直接引用
  35. //if (d[i].src.indexOf("U.U.OT.js") > -1) document.body.appendChild(d[i]);
  36. m.removeChild(d[i]);
  37. }
  38. }
  39. }
  40. //主项目的静态元素需要显示在子项目中的,全部提到body层
  41. U.CD.OU.Dis1473Ele = function () {
  42. //此处还可以把其他不可见,但本项目需要的元素移动上来。
  43. document.body.appendChild($("#UU_UR_Win")[0]);
  44. document.body.appendChild($("#addnewFriendsGroup")[0]); //追加添加好友的函数
  45. document.body.appendChild($("#UU_N_UProDiv")[0]); //个人信息面板
  46. document.body.appendChild($("#UseStudioU_MP")[0]); //音乐面板
  47. //document.body.appendChild($("#UseStudioUserDiskDiv")[0]);//硬盘面板
  48. document.body.appendChild($("#UF_UP_UserBoard")[0]); //好友面板
  49. document.body.appendChild($("#UDK_FUP")[0]); //flash上传面板
  50. document.body.appendChild($("#UDK_UP")[0]); //普通文件上传面板,上传区分了2个,比较特殊
  51. document.body.appendChild($("#UF_S_Div")[0]); //查找好友
  52. document.body.appendChild($("#UF_GM_FMDiv")[0]); //好友管理面板
  53. document.body.appendChild($("#UF_DM_AFSWindow")[0]); //添加好友面板
  54. document.body.appendChild($("#UU_N_CD")[0]); //添加自己的头像设置
  55. }
  56. //重写U.D.SetDTop,让包含编程端和1473主项目的div,不再置顶。
  57. //框架到最顶层,已经出现的div,点击任何一个地方都可以置顶。。
  58. //U.D.SetDTop = function (UEL) {
  59. // var _UE = U.M.GetEvent(); UEL = UEL || U.D.GetPD(_UE.srcElement); U.UF.EV.stopBubble(); //阻止冒泡
  60. // if (UEL.id == "UCD_Contain" || UEL.id == "US_M_IF") return;
  61. // if (UEL && U.M.GetStyle(UEL, "position") == "absolute" && UEL.tagName.toLocaleLowerCase() == "div") { UEL.style.zIndex = (top.US.ZV++); }
  62. //}
  63. //本项目和桌面互相切换函数,参数t为空,则切换主项目,否则,切换回本项目,以后会添加更多切换类型
  64. U.CD.OU.CHDesk = function (t) {
  65. var s = $("#US_M_DIV")[0], d = $("#UCD_Contain")[0];
  66. if (t == "d") { (new U.Img.Animate()).LScreenSwitch(s, d, function () { U.CD.OU.CHButton("切换编程端", "c", s) }); }
  67. else { (new U.Img.Animate()).LScreenSwitch(d, s, function () { /*U.CD.OU.CHButton("切换到桌面","d",d);*/ }); }
  68. if ($("#UD_Chat")[0]) $("#UD_Chat")[0].style.display = "none"; //如果聊天框存在,让它不显示。
  69. if ($("#UD_ZY")[0]) $("#UD_ZY")[0].style.display = "none";
  70. }
  71. //向主项目添加一个切换回来的按钮,type是返回哪个界面的标示符,只有2个界面,以后可能会添加比较多。参数s是每个端具体的div
  72. U.CD.OU.CHButton = function (n, t, s) {
  73. if ($("#UCD_OT_QH")[0]) return; //如果存在,则不再添加
  74. var a = $$("div", { "id": "UCD_OT_QH", "onclick": [[U.CD.OU.CHDesk, ([t])]] }, s);
  75. $$("div", { "className": "UD_NUB UCD_OT_QH_L" }, a);
  76. $$("div", { "className": "UCD_OT_QH_R", "innerHTML": n }, a);
  77. }
  78. //调用1473登录窗口,如果此元素是动态的,会直接加到body。如果是静态的,则需要把元素移动到body层。
  79. U.CD.OU.Login = function () {
  80. U.MD.U.L.DLTC(3);
  81. }
  82. //把1473主项目异步登录函数赋予这个全局变量,然后就可以重写主项目的异步登录函数,让它同时执行1473登录和本项目登录。
  83. U.CD.OU.LoginAsyn = U.MD.U.L.asynLoginAjax;
  84. U.MD.U.L.asynLoginAjax = function (request, TF) {
  85. U.CD.OU.LoginAsyn(request, TF); //执行1473登录回调。
  86. U.CD.U.LoginAsyn(request); //执行本项目登录,由于会顺次执行,所以需要修改一些信息
  87. }
  88. //执行用户退出操作
  89. U.CD.OU.LogoutAsyn = U.MD.U.LO.logoutSystem;
  90. U.MD.U.LO.logoutSystem = function () {
  91. U.CD.OU.LogoutAsyn(); //主项目退出
  92. U.CD.U.Logout(); //退出编程端
  93. }
  94. //弹出个人信息面板
  95. U.CD.OU.ProDiv = function () {
  96. U.U.DKGEZL();
  97. // U.U.UPD();
  98. // U.D.SetDTop($("#UU_N_UProDiv")[0]); //置于顶层
  99. }
  100. //异步获取新增用户,由于主项目模版只有9位,所以新做一个
  101. U.CD.OU.GNU = function () {
  102. U.A.Request("UseStudioManage.NetAdditionData", (["27"]), U.CD.OU.GNUAsyn, ([""]));
  103. }
  104. //新增用户异步处理。
  105. U.CD.OU.GNUAsyn = function (r) {
  106. r = r.value;
  107. if (r) {
  108. var _UDFD = document.createDocumentFragment();
  109. _UDFD = $("#UCD_L_NU")[0]; _UDFD.innerHTML = "";
  110. for (var i = 0; i < r.length; i++) {
  111. //$$("img", { "src": U.M.GetImgU(r[i].UserThumbnailImageHead), "title": r[i].UserNickName, "onerror": U.MD.C.imgError }, _UDFD);
  112. $$("img", { "src": U.M.GetImgU(r[i].UserThumbnailImageHead), "title": r[i].UserNickName, "onerror": U.MD.C.imgError, "onclick": [[U.UF.EV.stopBubble], [U.U.I.POUW, ([r[i].UserID])]] }, _UDFD);
  113. }
  114. }
  115. }
  116. //m为主版块id,c为子版块id
  117. U.CD.OU.Forum = function (m, c) {
  118. // U.MD.D.I.openApplication("PB", "3c779543-bc1a-4851-af22-af9ba97a5f33");
  119. // //(_UTF == null) && (_UTF = ["http://pb.1473.cn/PublicBoards.aspx?NavigatePath=" + UAF, [["window.frames['UseStudioStudyControlDivIframe'].U.BB.Navigateonload", ([UAF || ''])]]]);
  120. // //第2个参数好像没有用,按道理应该是主版块id
  121. // U.M.divdoubleClick('UseStudioStudyControlDiv', '28d8089d-ee85-4f9b-b1b6-8c1d8ccff719', null, null, 'SUB28d8089d-ee85-4f9b-b1b6-8c1d8ccff719');
  122. // //U.M.divdoubleClick('UseStudioStudyControlDiv', '', null, null, 'SUB3c779543-bc1a-4851-af22-af9ba97a5f33');
  123. // U.D.SetDTop($("#UseStudioStudyControlDiv")[0]);
  124. }
  125. //调用主项目回复信息,如果用户未登录,提示用户登录
  126. U.CD.OU.Reply = function (id) {
  127. if (!U.UF.S.Guid.test(id)) { alert("评论id应该是guid"); return; }
  128. U.D.CM.CKPLXS(id, "编程平台");
  129. }
  130. // 1、新项目引入1473需要做什么?
  131. //
  132. //
  133. //
  134. //
  135. //
  136. //
  137. //
  138. //
  139. //
  140. //
  141. //
  142. //
  143. // 2、跨域需要引用什么?怎么做
  144. //
  145. //
  146. //
  147. //
  148. //
  149. //
  150. //
  151. //
  152. //
  153. //