Namespace.register("U.CD.L"); //注册左边控件栏js。 //拖动时鼠标松开执行的函数。 U.CD.L.ConMUp = function (SO, EV) { //计算各种元素的位置。 EV = this.E; var _TF = SO.innerHTML, _UDOD, _UDPD = $("#UCD_CT_SM_IF"), _LT = _UDPD.GetElementInfo(), _L = EV["X"] - _LT["BCRL"], _T = EV["Y"] - _LT["BCRT"]; document.body.removeChild(SO); //如果在iframe范围内,追加效果,还需要判断在Code窗口内,这个地方在iframe宽高发生改变时有问题!!!!以后再测试 if (_L > 0 && _L < _LT["OW"] && _T > 0 && _T < _LT["OH"]) { switch (_TF) { case "button": _UDOD = U.CD.C.Button(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; case "reset": _UDOD = U.CD.C.Reset(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; case "submit": _UDOD = U.CD.C.Submit(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; case "text": _UDOD = U.CD.C.Text(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; case "password": _UDOD = U.CD.C.Password(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; case "radio": _UDOD = U.CD.C.Radio(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; case "checkbox": _UDOD = U.CD.C.Checkbox(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; case "form": _UDOD = U.CD.C.Form(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; case "img": _UDOD = U.CD.C.Img(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; case "img": _UDOD = U.CD.C.Img(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; //img case "table": U.CD.C.Table(_UDPD, _L, _T); break; //表格 case "textarea": _UDOD = U.CD.C.Textarea(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; //textarea case "div": _UDOD = U.CD.C.Div(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; //div case "p": _UDOD = U.CD.C.P(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; //段落 case "h": _UDOD = U.CD.C.H(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; //标题 case "ul": U.CD.C.Ul(_UDPD, _L, _T); break; //无序列表 case "ol": U.CD.C.Ol(_UDPD, _L, _T); break; //有序列表 case "navigation": _UDOD = U.CD.C.Navigation(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; //导航条 case "pagination": _UDOD = U.CD.C.Pagination(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; //分页 case "switchingcard": _UDOD = U.CD.C.Switchingcard(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; //切换卡 case "search": _UDOD = U.CD.C.Search(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; case "register": _UDOD = U.CD.C.Register(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; case "shade": _UDOD = U.CD.C.ShadeForms(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; case "buttongroup": _UDOD = U.CD.C.ButtonGrop(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; case "bar": _UDOD = U.CD.C.Bar(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; case "preview": _UDOD = U.CD.C.Preview(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; //case "select": _UDOD = U.CD.C.Select(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; case "select": _UDOD = U.CD.C.Select(_UDPD, _L, _T); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; case "comfirm": _UDOD = U.CD.UC.Confirm(_UDPD, _L, _T); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; } } } //把元素追加到iframe中,并根据iframe中内容返回给代码区域。 U.CD.L.AppendIF = function (_UDOD, _UDPD, _L, _T) { $(_UDOD).addAttrArray({ "style": { "left": _L + "px", "top": _T + "px"} }); //修改左上角坐标。 //把iframe中的代码获取出来追加到div中,如何实现?必须先在代码区域打出,否则outerHTML会自动去掉里面的文字。! //U.CD.CD.DrawCode(_UDPD[0].contentWindow.document.documentElement.outerHTML);//这样做会导致非html元素,例如文字js css 元素中的内容样式发生改变 U.CD.CD.AppendHTML(_UDOD); //在iframe中添加拖动属性,暂时不要此功能! //$(_UDOD).addAttrArray({ "onclick": U.M.apply(this, [[U.D.iconmove, ([_UDOD, null, { "UP": U.CD.L.IFConMUp}])]]) }); //$(_UDOD).onclick = U.M.apply(this, [[U.D.iconmove, ([_UDOD, null, { "UP": U.CD.L.IFConMUp}])]]); //$(_UDOD).onclick = function () { alert("123"); } _UDPD[0].contentWindow.document.body.appendChild(_UDOD); //此处才是真正的往子iframe中追加节点。然后反馈到页面,凡是从小读取RS.htm就会初始化? _UDPD[0].contentWindow.document.body.innerHTML += ""; //执行iframe中的内容,这是bug? } //创建拖动对象 U.CD.L.moudt = function (TF) { //获取坐标 var _UDOD, _EV = U.M.GetMousep(); //创建拖动的元素 _UDOD = $$("div", { "className": "UCD_TOOLT_Drag", "style": { "top": _EV["Y"] + "px", "left": _EV["X"] + "px" }, "innerHTML": TF }, document.body); //由于采用了ul li元素,拖动时会出现问题。下面代码解决。 try { U.D.iconmove(_UDOD, window.frames["UCD_CT_SM_IF"], { "UP": U.CD.L.ConMUp }) } //桌面图标移动,由于用户会删除初始化js代码,导致错误,需要捕获,并修正。但还是会有问题啊 catch (e) {//有点纠结,把RS.htm重新赋值出来,暂时如此 _UDOD.releaseCapture(); _UDOD.parentNode.removeChild(_UDOD); document.onmouseup = null; //释放焦点,移除拖动节点,拖动事件赋空。 //拖动出错后确认重新获取代码,调用初始化函数 U.UI.Confirm("
所有文件必须引用 http://d.1473.cn/UJ.js ,否则会拒绝访问,请仔细检查
", [U.CD.CD.Init, ([])], ""); return; } } //桌面图标移动 U.CD.L.iconmove = function (SO, UW) { var _C = new U.CD.L.ICM(SO, UW); _C.init(SO, UW); _C.id = "UCD_Left_DO"; //等到一个拖动对象 document.onmousemove = U.M.apply(_C, [[_C.move]]); document.onmouseup = U.M.apply(_C, [[_C.up]]); //设置 (UW) && (UW.document.onmousemove = document.onmousemove) && (UW.document.onmouseup = document.onmouseup); //chrome的iframe文档是勾连在一起的,ie是分开的。所以有兼容性问题 } //桌面图标移动 U.CD.L.ICM = function (SO, UW) { this.X = SO.offsetLeft, this.Y = SO.offsetTop; this.W = UW; this.SW; this.SO = SO; this.E; } //桌面图标移动 U.CD.L.ICM.prototype = { //初始化逻辑 init: function (SO, UAPP) { var _EV = U.M.GetMousep(); this.E = _EV; this.SW = [0, 0, US.Width - 65, US.Height - 240, _EV["X"] - SO.offsetLeft, _EV["Y"] - SO.offsetTop]; //移动位置的偏差 SO.setCapture(); }, //移动逻辑 move: function () { var _EV; if (event) { _EV = U.M.GetMousep(); } else { var _UFED = $("#" + this.W.name).GetElementInfo(); _EV = this.W.U.M.GetMousep(); _EV["X"] += _UFED["BCRL"]; _EV["Y"] += _UFED["BCRT"]; } if (this.E["X"] - _EV["X"] != 0 && this.E["Y"] - _EV["Y"] != 0) { var _X = _EV["X"] - this.SW[4]; //鼠标移动过程横坐标 var _Y = _EV["Y"] - this.SW[5]; //鼠标移动过程纵坐标 if (_X < this.SW[1]) { _X = this.SW[1]; } else if (_X > this.SW[2]) { _X = this.SW[2]; } if (_Y < this.SW[0]) { _Y = this.SW[0]; } else if (_Y > this.SW[3]) { _Y = this.SW[3]; } $(this.SO).addAttrArray({ "style": { "left": _X + "px", "top": _Y + "px"} }); //U.D.MoveCase = true; //允许拖动不允许点击 this.E = _EV; } }, //释放事件 up: function () { U.CD.L.ConMUp(this.SO, this.E); //松开鼠标调动绘制控件的函数 this.SO.releaseCapture(); this.W.document.onmousemove = this.W.document.onmouseup = document.onmousemove = document.onmouseup = null; //释放 } } // //打开或者关闭控件列表 U.CD.L.OpenOrCloseList = function (SO) { SO.style.display = SO.style.display == "none" ? "block" : "none"; }