U.CD.Left.js 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. Namespace.register("U.CD.L"); //注册左边控件栏js。
  2. //拖动时鼠标松开执行的函数。
  3. U.CD.L.ConMUp = function (SO, EV) {
  4. //计算各种元素的位置。
  5. 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);
  6. //如果在iframe范围内,追加效果,还需要判断在Code窗口内,这个地方在iframe宽高发生改变时有问题!!!!以后再测试
  7. if (_L > 0 && _L < _LT["OW"] && _T > 0 && _T < _LT["OH"]) {
  8. switch (_TF) {
  9. case "button": _UDOD = U.CD.C.Button(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break;
  10. case "reset": _UDOD = U.CD.C.Reset(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break;
  11. case "submit": _UDOD = U.CD.C.Submit(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break;
  12. case "text": _UDOD = U.CD.C.Text(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break;
  13. case "password": _UDOD = U.CD.C.Password(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break;
  14. case "radio": _UDOD = U.CD.C.Radio(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break;
  15. case "checkbox": _UDOD = U.CD.C.Checkbox(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break;
  16. case "form": _UDOD = U.CD.C.Form(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break;
  17. case "img": _UDOD = U.CD.C.Img(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break;
  18. case "img": _UDOD = U.CD.C.Img(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; //img
  19. case "table": U.CD.C.Table(_UDPD, _L, _T); break; //表格
  20. case "textarea": _UDOD = U.CD.C.Textarea(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; //textarea
  21. case "div": _UDOD = U.CD.C.Div(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; //div
  22. case "p": _UDOD = U.CD.C.P(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; //段落
  23. case "h": _UDOD = U.CD.C.H(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; //标题
  24. case "ul": U.CD.C.Ul(_UDPD, _L, _T); break; //无序列表
  25. case "ol": U.CD.C.Ol(_UDPD, _L, _T); break; //有序列表
  26. case "navigation": _UDOD = U.CD.C.Navigation(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; //导航条
  27. case "pagination": _UDOD = U.CD.C.Pagination(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; //分页
  28. case "switchingcard": _UDOD = U.CD.C.Switchingcard(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; //切换卡
  29. case "search": _UDOD = U.CD.C.Search(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break;
  30. case "register": _UDOD = U.CD.C.Register(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break;
  31. case "shade": _UDOD = U.CD.C.ShadeForms(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break;
  32. case "buttongroup": _UDOD = U.CD.C.ButtonGrop(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break;
  33. case "bar": _UDOD = U.CD.C.Bar(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break;
  34. case "preview": _UDOD = U.CD.C.Preview(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break;
  35. //case "select": _UDOD = U.CD.C.Select(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break;
  36. case "select": _UDOD = U.CD.C.Select(_UDPD, _L, _T); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break;
  37. case "comfirm": _UDOD = U.CD.UC.Confirm(_UDPD, _L, _T); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break;
  38. }
  39. }
  40. }
  41. //把元素追加到iframe中,并根据iframe中内容返回给代码区域。
  42. U.CD.L.AppendIF = function (_UDOD, _UDPD, _L, _T) {
  43. $(_UDOD).addAttrArray({ "style": { "left": _L + "px", "top": _T + "px"} }); //修改左上角坐标。
  44. //把iframe中的代码获取出来追加到div中,如何实现?必须先在代码区域打出,否则outerHTML会自动去掉里面的文字。!
  45. //U.CD.CD.DrawCode(_UDPD[0].contentWindow.document.documentElement.outerHTML);//这样做会导致非html元素,例如文字js css 元素中的内容样式发生改变
  46. U.CD.CD.AppendHTML(_UDOD);
  47. //在iframe中添加拖动属性,暂时不要此功能!
  48. //$(_UDOD).addAttrArray({ "onclick": U.M.apply(this, [[U.D.iconmove, ([_UDOD, null, { "UP": U.CD.L.IFConMUp}])]]) });
  49. //$(_UDOD).onclick = U.M.apply(this, [[U.D.iconmove, ([_UDOD, null, { "UP": U.CD.L.IFConMUp}])]]);
  50. //$(_UDOD).onclick = function () { alert("123"); }
  51. _UDPD[0].contentWindow.document.body.appendChild(_UDOD); //此处才是真正的往子iframe中追加节点。然后反馈到页面,凡是从小读取RS.htm就会初始化?
  52. _UDPD[0].contentWindow.document.body.innerHTML += ""; //执行iframe中的内容,这是bug?
  53. }
  54. //创建拖动对象
  55. U.CD.L.moudt = function (TF) {
  56. //获取坐标
  57. var _UDOD, _EV = U.M.GetMousep();
  58. //创建拖动的元素
  59. _UDOD = $$("div", { "className": "UCD_TOOLT_Drag", "style": { "top": _EV["Y"] + "px", "left": _EV["X"] + "px" }, "innerHTML": TF }, document.body);
  60. //由于采用了ul li元素,拖动时会出现问题。下面代码解决。
  61. try { U.D.iconmove(_UDOD, window.frames["UCD_CT_SM_IF"], { "UP": U.CD.L.ConMUp }) } //桌面图标移动,由于用户会删除初始化js代码,导致错误,需要捕获,并修正。但还是会有问题啊
  62. catch (e) {//有点纠结,把RS.htm重新赋值出来,暂时如此
  63. _UDOD.releaseCapture(); _UDOD.parentNode.removeChild(_UDOD); document.onmouseup = null; //释放焦点,移除拖动节点,拖动事件赋空。
  64. //拖动出错后确认重新获取代码,调用初始化函数
  65. 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, ([])], "");
  66. return;
  67. }
  68. }
  69. //桌面图标移动
  70. U.CD.L.iconmove = function (SO, UW) {
  71. var _C = new U.CD.L.ICM(SO, UW); _C.init(SO, UW); _C.id = "UCD_Left_DO"; //等到一个拖动对象
  72. document.onmousemove = U.M.apply(_C, [[_C.move]]); document.onmouseup = U.M.apply(_C, [[_C.up]]); //设置
  73. (UW) && (UW.document.onmousemove = document.onmousemove) && (UW.document.onmouseup = document.onmouseup); //chrome的iframe文档是勾连在一起的,ie是分开的。所以有兼容性问题
  74. }
  75. //桌面图标移动
  76. U.CD.L.ICM = function (SO, UW) {
  77. this.X = SO.offsetLeft, this.Y = SO.offsetTop;
  78. this.W = UW; this.SW; this.SO = SO; this.E;
  79. }
  80. //桌面图标移动
  81. U.CD.L.ICM.prototype = {
  82. //初始化逻辑
  83. init: function (SO, UAPP) {
  84. var _EV = U.M.GetMousep(); this.E = _EV;
  85. this.SW = [0, 0, US.Width - 65, US.Height - 240, _EV["X"] - SO.offsetLeft, _EV["Y"] - SO.offsetTop]; //移动位置的偏差
  86. SO.setCapture();
  87. },
  88. //移动逻辑
  89. move: function () {
  90. var _EV;
  91. 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"]; }
  92. if (this.E["X"] - _EV["X"] != 0 && this.E["Y"] - _EV["Y"] != 0) {
  93. var _X = _EV["X"] - this.SW[4]; //鼠标移动过程横坐标
  94. var _Y = _EV["Y"] - this.SW[5]; //鼠标移动过程纵坐标
  95. if (_X < this.SW[1]) { _X = this.SW[1]; }
  96. else if (_X > this.SW[2]) { _X = this.SW[2]; }
  97. if (_Y < this.SW[0]) { _Y = this.SW[0]; }
  98. else if (_Y > this.SW[3]) { _Y = this.SW[3]; }
  99. $(this.SO).addAttrArray({ "style": { "left": _X + "px", "top": _Y + "px"} });
  100. //U.D.MoveCase = true; //允许拖动不允许点击
  101. this.E = _EV;
  102. }
  103. },
  104. //释放事件
  105. up: function () {
  106. U.CD.L.ConMUp(this.SO, this.E); //松开鼠标调动绘制控件的函数
  107. this.SO.releaseCapture(); this.W.document.onmousemove = this.W.document.onmouseup = document.onmousemove = document.onmouseup = null; //释放
  108. }
  109. }
  110. //
  111. //打开或者关闭控件列表
  112. U.CD.L.OpenOrCloseList = function (SO) { SO.style.display = SO.style.display == "none" ? "block" : "none"; }