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