//由于经常更换版本号,导致用户存储的js文件有时候找不到,导致iframe跨域访问。而用户不清楚情况,所以现在要定向名称就叫UJ.js 有思js //每次更换版本时必须拷贝成UJ.js 中文名叫云js。 //编辑区主js文件 Namespace.register("U.CD"); //注册开发类主js,这个以后要放在主文件中。 //全局变量. U.UF.S.FileName = /^([a-zA-Z0-9\s\._-]+)$/; //匹配文件名的正则表达式。 U.UF.S.ZWFileName = /^[0-9a-zA-Z\u4e00-\u9fa5\._-]{1,40}\\*$/; //匹配中文文件名的正则表达式。 U.CD.AjaxUrl = 'http://d-back.1473.cn/'; //默认请求页面 U.CD.AjaxCross = "http://d-back.1473.cn/CD.htm"; //U.CD.AjaxUrl = 'http://d.1473.cn:1337/'; //默认请求页面 //U.CD.AjaxCross = "http://d.1473.cn:1337/CD.htm"; U.CD.TipR = null; //光标位置。 U.CD.Loading = null; //全局Loading。 U.CD.USLang = "USHtml"; //由于C,PHP,HTML,需要共用一个数据,否则很多种语言很多数据库。所以在数据库根目录加一个标识以便识别 U.CD.DType = { "TW": "提问", "ZY": "作业", "JH": "精华", "CT": "控件" }; /*发布项目时选项,全局变量,和数据库对应,和C PHP有关系*/ U.CD.RPID = "b48eb794-10cd-4d0f-80b3-2632b57dd45c"; //前端评论主id //统一登录全局变量 US.LoginID = 2; //onload U.CD.Init = function () { U.CD.Loading = $("#UCD_LD")[0]; //全局loading开始 U.CD.LO.SetWH(); //由于html局限性,强制设置宽高。 U.CD.CD.Init(); //初始化应用 U.CD.Tip.Init(); //提示框初始化 U.ACD = window.frames["U_CD"].U.A; U.UF.CD.loadPageCrossDomain(function () { //页面跨域完毕,调用处理方法。 U.CD.AsynJWH(); }); // 这版先把作品的工具栏隐藏 //U.CD.LO.HEToolbar(); U.CD.CF.Config.implement(); U.CD.TipR = U.UF.E.GetSelectionRange(window, $("#UCD_CT_Code_CT")[0], { "TF": "UCD_CODE", "CB": U.CD.R.Wrap }); //获取光标位置。 } //所有的跨域文件加载完毕,允许页面点击。在1473所有事件动态生成,鼠标点击无效。 //异步加载完执行函数 U.CD.AsynJWH = function () { window.frames["UCD_CT_SM_IF"].document.body.onmousedown = U.CD.L.settd; //全局loading结束。 U.CD.Loading.style.display = "none"; //U.CD.SY.BK(); //加载首页 //获取传参,如果有#!等字符,执行url重写。否则,执行一般处理 U.CD.Loading.innerHTML = "跨域完成"; U.CD.SL.Init(); //加载实例 //全局loading结束。 U.CD.Loading.style.display = "none"; U.CD.Url.Init(); //URL重写模块 } //加载代码 U.CD.LoadCode = function (UTH) { setTimeout(function () { U.CD.CD.DrawCode(U.CD.CD.InitCode(UTH), false); //初始化代码后绘制在代码窗口 U.CD.CD.ExecIF($('#UCD_CT_Code_CT')[0]); }, 1000); } //U.CD.Loading.innerHTML = "开始跨域"; //U.UF.EV.addPrototype(Object, U.E.E); //让所有的属性都有增删查改 包括了字符串 数组 集合 函数 所以需要改写for in循环 //本项目所有Ajax请求使用U.ACD。如果使用U.A会跳到main项目中执行,导致跨域。重要。DISK是U.Adisk。参加函数U.CD.AsynLI //U.ACD = U.A; U.CD.AsynLI(); //跨域Ajax请求的解决方法//项目调用了主项目的U.A。。。会导致跨域拒绝访问。 //U.CD.CD.Init(); //初始化代码窗口。必须提前到用户自动登录以前,否则会导致跨域问题。 //用户登录后再装载最右边的面板。 //用户登录后装载用户内容 //U.CD.U.LUData(); //setTimeout(function () { U.CD.LO.Split(); }, 500)//解决ie7垂直滚动条问题。ie7垂直滚动条有时候会有很长的边距,太奇怪。 //晕了,怎么老是要这样,iframe中的运行也要如此,没办法了 //setTimeout(function () { U.CD.CD.IFReload(); }, 3000); //全局loading结束。 //U.CD.Loading = $("#UCD_LD")[0]; U.CD.Loading.style.display = "none"; //首页窗口改变重新设置宽高 //window.onresize = U.CD.SY.SetWH; //加载1473主项目 //U.CD.OU.Get1473(); //窗口改变重新设置宽高。 window.onresize = U.CD.LO.SetWH; //函数起始点 window.onload = U.CD.Init; //window.onresize = U.CD.LO.SetWH; //鼠标左右键 //window.onmousedown = U.CD.SK.MouseShunt; //退出时提示保存代码 window.onbeforeunload = function () { //event.returnValue = "Are u ssss"; } /* */ /** * 引入CodeMirror,在视图上初始化对象,并赋予全局U.CD.Editor后续操作主要针对两个接口 * 1.U.CD.Editor.setValue('为codemirror赋值'); * 2.U.CD.Editor.getValue(); 该方法得到的结果是经过转义的数据 * * 模块引用 * lineNumbers 行号 * mode: 语法分析模式 * selectionPointer: 多文本操作 */ // var mixedMode = { // name: "htmlmixed", // scriptTypes: [{ // matches: /\/x-handlebars-template|\/x-mustache/i, // mode: null // }, { // matches: /(text|application)\/(x-)?vb(a|script)/i, // mode: "vbscript" // }] // }; // U.CD.Editor = CodeMirror.fromTextArea($("#UCD_CT_Code_Value")[0], { // lineNumbers: true, // extraKeys: { "Shift-Space": "autocomplete" }, // selectionPointer: true, // mode: mixedMode // }); // // 绑定自动完成事件, 通过一个空格键位触发,后续再实现一个舒适的任意键自动完成方案 // // 1. 区分现在存在于哪个代码块,html/js/css 然后争对各个代码块进行处理 // U.CD.Editor.on("keyup", function (cm, e) { // var cursor = cm.getCursor(); // var mode = cm.getModeAt(cursor); // var line = cm.getLine(cursor.line); // var isNull = (line.slice(0, cursor.ch - 1).trim() === ''); // 光标前为空 // var isAuto = false; // var hasShift = e.shiftKey; // var keyCode = e.keyCode; // // css // var hasBrace = ~line.indexOf('{'); // // var hasCrtl = e.ctrlKey; // switch (mode.name) { // case "javascript": // if (((e.keyCode === 190 && !hasShift) || e.keyCode === 110) && !isNull) isAuto = true; // break; // case "xml": // break; // case "css": // if (hasShift && keyCode === 186 && !isNull) isAuto = true; // else if (hasShift && keyCode == 219 && !hasBrace) isAuto = true; // break; // } // if (e.keyCode === 32) isAuto = true; // if (isAuto) { // setTimeout(function () { // cm.execCommand("autocomplete"); // }, 20); // } // U.CD.CD.IFReload(); // });