123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- 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("<div style=' color:red;text-align:left; margin-left:10px; height:25px;'>所有文件必须引用 http://d.1473.cn/UJ.js ,否则会拒绝访问,请仔细检查</div> ", [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"; }
|