U.CD.IF.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. Namespace.register("U.CD.IF"); //注册iframe中拖动方法,解决不能再次拖动问题
  2. //看用户反馈,再添加此方法。实现此方法需要解决iframe中运行window.onload函数。
  3. //此js需要包含在RS.htm中才能实现拖动。
  4. //让iframe中的元素可拖动。
  5. U.CD.IF.Drag = function () {
  6. var evt = event || window.event;
  7. var element = evt.srcElement || evt.target;
  8. document.onmousedown = function () {
  9. //如果是事件源是body,则返回
  10. if (event.srcElement == document.body) return;
  11. var p = U.M.MaxPNode(event.srcElement);
  12. var s = p.style.cssText; //移动之前的元素的位置
  13. U.D.iconmove(p, null, { "UP": U.M.apply(this, [[U.CD.IF.IFConMUp, ([p, s])]]) }); //不带虚拟框的移动
  14. //U.D.DragMouseDown(p, { "UP": U.CD.IF.IFConMUp });//带虚拟框的移动。
  15. };
  16. //document.onmouseover = function () {
  17. //if (event.srcElement == document.body) return; //如果是事件源是body,则返回
  18. //var p = U.M.MaxPNode(event.srcElement); //找到元素的父亲,并且一定是body的孩子结点。
  19. //}
  20. }
  21. //查找一个结点的除body之外的最大父亲节点,不能传递body节点本身
  22. U.M.MaxPNode = function (o) {
  23. if (o == document.body) return null;
  24. if (o.parentNode != document.body) return U.M.MaxPNode(o.parentNode);
  25. else return o;
  26. }
  27. //在iframe中拖动元素
  28. U.CD.IF.IFConMUp = function (p, s) {
  29. var o = p, _x = parseInt(o.style.left) - event.clientX, _y = parseInt(o.style.top) - event.clientY;
  30. o.style.left = event.clientX + _x + "px";
  31. o.style.top = event.clientY + _y + "px";
  32. //得到拖动元素的原始css样式,去top修改相应
  33. var z = top.$("#UCD_CT_Code_CT")[0].childNodes, i;
  34. for (i = 0; i < z.length; i++) {
  35. if (z[i].innerText.indexOf(s) > -1) {
  36. z[i].innerText = z[i].innerText.replace(s, p.style.cssText);
  37. }
  38. }
  39. }
  40. //此处windows.onload会覆盖iframe中的window.onload,导致显示不出正确的结果。
  41. //window.onload += U.CD.IF.Drag;
  42. //U.CD.IF.Load = window.onload;
  43. //让2个window.onload同时生效
  44. //U.M.AddEvent("load", window, U.CD.IF.Drag);
  45. //移除window.onload中多添加的函数
  46. //U.M.ReEvent("load", window, U.CD.IF.Drag);