U.CD.js 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. //由于经常更换版本号,导致用户存储的js文件有时候找不到,导致iframe跨域访问。而用户不清楚情况,所以现在要定向名称就叫UJ.js 有思js
  2. //每次更换版本时必须拷贝成UJ.js 中文名叫云js。
  3. //编辑区主js文件
  4. Namespace.register("U.CD"); //注册开发类主js,这个以后要放在主文件中。
  5. //全局变量.
  6. U.UF.S.FileName = /^([a-zA-Z0-9\s\._-]+)$/; //匹配文件名的正则表达式。
  7. U.UF.S.ZWFileName = /^[0-9a-zA-Z\u4e00-\u9fa5\._-]{1,40}\\*$/; //匹配中文文件名的正则表达式。
  8. U.CD.AjaxUrl = 'http://d-back.1473.cn/'; //默认请求页面
  9. U.CD.AjaxCross = "http://d-back.1473.cn/CD.htm";
  10. //U.CD.AjaxUrl = 'http://d.1473.cn:1337/'; //默认请求页面
  11. //U.CD.AjaxCross = "http://d.1473.cn:1337/CD.htm";
  12. U.CD.TipR = null; //光标位置。
  13. U.CD.Loading = null; //全局Loading。
  14. U.CD.USLang = "USHtml"; //由于C,PHP,HTML,需要共用一个数据,否则很多种语言很多数据库。所以在数据库根目录加一个标识以便识别
  15. U.CD.DType = { "TW": "提问", "ZY": "作业", "JH": "精华", "CT": "控件" }; /*发布项目时选项,全局变量,和数据库对应,和C PHP有关系*/
  16. U.CD.RPID = "b48eb794-10cd-4d0f-80b3-2632b57dd45c"; //前端评论主id
  17. //统一登录全局变量
  18. US.LoginID = 2;
  19. //onload
  20. U.CD.Init = function () {
  21. U.CD.Loading = $("#UCD_LD")[0]; //全局loading开始
  22. U.CD.LO.SetWH(); //由于html局限性,强制设置宽高。
  23. U.CD.CD.Init(); //初始化应用
  24. U.CD.Tip.Init(); //提示框初始化
  25. U.ACD = window.frames["U_CD"].U.A;
  26. U.UF.CD.loadPageCrossDomain(function () {
  27. //页面跨域完毕,调用处理方法。
  28. U.CD.AsynJWH();
  29. });
  30. // 这版先把作品的工具栏隐藏
  31. //U.CD.LO.HEToolbar();
  32. U.CD.CF.Config.implement();
  33. U.CD.TipR = U.UF.E.GetSelectionRange(window, $("#UCD_CT_Code_CT")[0], { "TF": "UCD_CODE", "CB": U.CD.R.Wrap }); //获取光标位置。
  34. }
  35. //所有的跨域文件加载完毕,允许页面点击。在1473所有事件动态生成,鼠标点击无效。
  36. //异步加载完执行函数
  37. U.CD.AsynJWH = function () {
  38. window.frames["UCD_CT_SM_IF"].document.body.onmousedown = U.CD.L.settd;
  39. //全局loading结束。
  40. U.CD.Loading.style.display = "none";
  41. //U.CD.SY.BK(); //加载首页
  42. //获取传参,如果有#!等字符,执行url重写。否则,执行一般处理
  43. U.CD.Loading.innerHTML = "跨域完成";
  44. U.CD.SL.Init(); //加载实例
  45. //全局loading结束。
  46. U.CD.Loading.style.display = "none";
  47. U.CD.Url.Init(); //URL重写模块
  48. }
  49. //加载代码
  50. U.CD.LoadCode = function (UTH) {
  51. setTimeout(function () {
  52. U.CD.CD.DrawCode(U.CD.CD.InitCode(UTH), false); //初始化代码后绘制在代码窗口
  53. U.CD.CD.ExecIF($('#UCD_CT_Code_CT')[0]);
  54. }, 1000);
  55. }
  56. //U.CD.Loading.innerHTML = "开始跨域";
  57. //U.UF.EV.addPrototype(Object, U.E.E); //让所有的属性都有增删查改 包括了字符串 数组 集合 函数 所以需要改写for in循环
  58. //本项目所有Ajax请求使用U.ACD。如果使用U.A会跳到main项目中执行,导致跨域。重要。DISK是U.Adisk。参加函数U.CD.AsynLI
  59. //U.ACD = U.A; U.CD.AsynLI(); //跨域Ajax请求的解决方法//项目调用了主项目的U.A。。。会导致跨域拒绝访问。
  60. //U.CD.CD.Init(); //初始化代码窗口。必须提前到用户自动登录以前,否则会导致跨域问题。
  61. //用户登录后再装载最右边的面板。
  62. //用户登录后装载用户内容
  63. //U.CD.U.LUData();
  64. //setTimeout(function () { U.CD.LO.Split(); }, 500)//解决ie7垂直滚动条问题。ie7垂直滚动条有时候会有很长的边距,太奇怪。
  65. //晕了,怎么老是要这样,iframe中的运行也要如此,没办法了
  66. //setTimeout(function () { U.CD.CD.IFReload(); }, 3000);
  67. //全局loading结束。
  68. //U.CD.Loading = $("#UCD_LD")[0]; U.CD.Loading.style.display = "none";
  69. //首页窗口改变重新设置宽高
  70. //window.onresize = U.CD.SY.SetWH;
  71. //加载1473主项目
  72. //U.CD.OU.Get1473();
  73. //窗口改变重新设置宽高。
  74. window.onresize = U.CD.LO.SetWH;
  75. //函数起始点
  76. window.onload = U.CD.Init;
  77. //window.onresize = U.CD.LO.SetWH;
  78. //鼠标左右键
  79. //window.onmousedown = U.CD.SK.MouseShunt;
  80. //退出时提示保存代码
  81. window.onbeforeunload = function () {
  82. //event.returnValue = "Are u ssss";
  83. }
  84. /*
  85. */
  86. /**
  87. * 引入CodeMirror,在视图上初始化对象,并赋予全局U.CD.Editor后续操作主要针对两个接口
  88. * 1.U.CD.Editor.setValue('为codemirror赋值');
  89. * 2.U.CD.Editor.getValue(); 该方法得到的结果是经过转义的数据
  90. *
  91. * 模块引用
  92. * lineNumbers 行号
  93. * mode: 语法分析模式
  94. * selectionPointer: 多文本操作
  95. */
  96. // var mixedMode = {
  97. // name: "htmlmixed",
  98. // scriptTypes: [{
  99. // matches: /\/x-handlebars-template|\/x-mustache/i,
  100. // mode: null
  101. // }, {
  102. // matches: /(text|application)\/(x-)?vb(a|script)/i,
  103. // mode: "vbscript"
  104. // }]
  105. // };
  106. // U.CD.Editor = CodeMirror.fromTextArea($("#UCD_CT_Code_Value")[0], {
  107. // lineNumbers: true,
  108. // extraKeys: { "Shift-Space": "autocomplete" },
  109. // selectionPointer: true,
  110. // mode: mixedMode
  111. // });
  112. // // 绑定自动完成事件, 通过一个空格键位触发,后续再实现一个舒适的任意键自动完成方案
  113. // // 1. 区分现在存在于哪个代码块,html/js/css 然后争对各个代码块进行处理
  114. // U.CD.Editor.on("keyup", function (cm, e) {
  115. // var cursor = cm.getCursor();
  116. // var mode = cm.getModeAt(cursor);
  117. // var line = cm.getLine(cursor.line);
  118. // var isNull = (line.slice(0, cursor.ch - 1).trim() === ''); // 光标前为空
  119. // var isAuto = false;
  120. // var hasShift = e.shiftKey;
  121. // var keyCode = e.keyCode;
  122. // // css
  123. // var hasBrace = ~line.indexOf('{');
  124. // // var hasCrtl = e.ctrlKey;
  125. // switch (mode.name) {
  126. // case "javascript":
  127. // if (((e.keyCode === 190 && !hasShift) || e.keyCode === 110) && !isNull) isAuto = true;
  128. // break;
  129. // case "xml":
  130. // break;
  131. // case "css":
  132. // if (hasShift && keyCode === 186 && !isNull) isAuto = true;
  133. // else if (hasShift && keyCode == 219 && !hasBrace) isAuto = true;
  134. // break;
  135. // }
  136. // if (e.keyCode === 32) isAuto = true;
  137. // if (isAuto) {
  138. // setTimeout(function () {
  139. // cm.execCommand("autocomplete");
  140. // }, 20);
  141. // }
  142. // U.CD.CD.IFReload();
  143. // });