123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- 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);
|