无法实现
但是可以使用frame做一个窗口引用
然后利用frame的特性把DIV作为一个对象传过去

解决方案 »

  1.   

    一个父窗口打开的不同窗口同域下是有可能访问彼此内部的DIV属性和内容,从而达到删除在一个窗口删除,在另一个窗口复制的效果;但让DIV在不同窗口间拖动就绝对是不可能的。
      

  2.   

    同意ls
    可以通过删除/添加的方法实现div的转移
    而且这两个页面存在着一定的关系,比如:父子关系、兄弟关系拖动,就是通过触发事件改变div的位置
    位置再怎么变,是不可能变到另外一个窗口去的
      

  3.   

    -_-!!
    亏lz想的出来...
    就好像问的把一个IE窗口拖到另外一台机一样...
      

  4.   

    这个不是我想出来的,是老板的要求。关于楼上说的使用frame的方法,我也考虑过,但似乎同样不能达到拖放的效果。还有一点我想和ls的说的是,通过改写activeX或者firefox extention实现从一个窗口拖到另外一个窗口并不是完全不可能的。
      

  5.   

    看来现在唯一的办法就只能自己用div做一个类似于pop-up window的东西了。或者还有什么其他的方法吗?请高手指点
      

  6.   

    WebForm1.html
    ----------------
    <HTML>
    <HEAD>
    <title>WebForm1</title>
    <script language="javascript">
        function init()
        {
    window.document.body.attachEvent("onmouseover",bodyMouseOver);
    window.document.body.attachEvent("onmouseout",bodyMouseOut);drawDiv();
        }
        function drawDiv()
        {
    var div = document.createElement(
        "<div id=div1 "+
        " style=FONT-SIZE:12px;LEFT:0px;WIDTH:100px;POSITION:absolute;TOP:0px;HEIGHT:60px;BACKGROUND-COLOR:yellow"+
        " onmousedown=mousedown()"+
        " onmousemove=mousemove()"+
        " onmouseup=mouseup()></div>");
    div.innerHTML = "hello world";
    document.body.appendChild(div);
        }
        
        var g_div1_tag = false;
        var g_div1_oldx = 0;
        var g_div1_oldy = 0;
        function mousedown()
        {
    g_div1_tag = true;
    g_div1_oldx = event.x;
    g_div1_oldy = event.y;
        }
        function mousemove()
        {
    if(g_div1_tag)
    {
    var x = event.x;
    var y = event.y;
    document.all.div1.style.pixelLeft += x - g_div1_oldx;
    document.all.div1.style.pixelTop  += y - g_div1_oldy;
    g_div1_oldx = x;
    g_div1_oldy = y;
    }
        }
        function mouseup()
        {
    if(g_div1_tag)
    {
    g_div1_tag = false;
    }
        }
      
        function bodyMouseOut()
        {
    if(g_div1_tag)
    {
    g_div1_tag = false;var relativeX = event.x - document.all.div1.style.pixelLeft;
    var relativeY = event.y - document.all.div1.style.pixelTop;var str = "";
    str += "<context>";
    str +=    "<from>FuWaer_WebForm1</from>";
    str +=    "<relativeX>"+relativeX+"</relativeX>";
    str +=    "<relativeY>"+relativeY+"</relativeY>";
    str +=    "<objectId>"+document.all.div1.id+"</objectId>";
    str +=    "<object>"+escape(document.all.div1.outerHTML)+"</object>";
    str += "</context>";
    clipboardData.setData("text",str);document.body.removeChild(document.all.div1);}
        }
        
        function bodyMouseOver()
        {try
    {
    var str = clipboardData.getData("text");
    var xmldoc = new ActiveXObject("MSXML2.DOMDocument");
    xmldoc.loadXML(str);
    var from = xmldoc.documentElement.childNodes[0].text;
    if(from=="FuWaer_WebForm2")
    {
    var relativeX = xmldoc.documentElement.childNodes[1].text;
    var relativeY = xmldoc.documentElement.childNodes[2].text;
    var objectId = xmldoc.documentElement.childNodes[3].text;
    var object = unescape(xmldoc.documentElement.childNodes[4].text);clipboardData.clearData();document.body.innerHTML += object;
    var div = document.getElementById(objectId);
    div.style.display = "none";
    div.style.pixelLeft = event.x - relativeX;
    div.style.pixelTop = event.y - relativeY;
    div.style.display = "";}
    }
    catch(e)
    {
    }
        }
    </script>
    </HEAD>
    <body onload="init()">
    </body>
    </HTML>
      

  7.   

    WebForm2.html
    ------------------
    <HTML>
    <HEAD>
    <title>WebForm2</title>
    <script language="javascript">
        function init()
        {
    window.document.body.attachEvent("onmouseover",bodyMouseOver);
    window.document.body.attachEvent("onmouseout",bodyMouseOut);
        }    var g_div1_tag = false;
        var g_div1_oldx = 0;
        var g_div1_oldy = 0;
        function mousedown()
        {
    g_div1_tag = true;
    g_div1_oldx = event.x;
    g_div1_oldy = event.y;
        }
        function mousemove()
        {
    if(g_div1_tag)
    {
    var x = event.x;
    var y = event.y;
    document.all.div1.style.pixelLeft += x - g_div1_oldx;
    document.all.div1.style.pixelTop  += y - g_div1_oldy;
    g_div1_oldx = x;
    g_div1_oldy = y;
    }
        }
        function mouseup()
        {
    if(g_div1_tag)
    {
    g_div1_tag = false;
    }
        }    
        function bodyMouseOut()
        {
    if(g_div1_tag)
    {
    g_div1_tag = false;var relativeX = event.x - document.all.div1.style.pixelLeft;
    var relativeY = event.y - document.all.div1.style.pixelTop;var str = "";
    str += "<context>";
    str +=    "<from>FuWaer_WebForm2</from>";
    str +=    "<relativeX>"+relativeX+"</relativeX>";
    str +=    "<relativeY>"+relativeY+"</relativeY>";
    str +=    "<objectId>"+document.all.div1.id+"</objectId>";
    str +=    "<object>"+escape(document.all.div1.outerHTML)+"</object>";
    str += "</context>";
    clipboardData.setData("text",str);document.body.removeChild(document.all.div1);}
        }
        
        function bodyMouseOver()
        {
    try
    {
    var str = clipboardData.getData("text");
    var xmldoc = new ActiveXObject("MSXML2.DOMDocument");
    xmldoc.loadXML(str);
    var from = xmldoc.documentElement.childNodes[0].text;
    if(from=="FuWaer_WebForm1")
    {
    var relativeX = xmldoc.documentElement.childNodes[1].text;
    var relativeY = xmldoc.documentElement.childNodes[2].text;
    var objectId = xmldoc.documentElement.childNodes[3].text;
    var object = unescape(xmldoc.documentElement.childNodes[4].text);clipboardData.clearData();document.body.innerHTML += object;
    var div = document.getElementById(objectId);
    div.style.display = "none";
    div.style.pixelLeft = event.x - relativeX;
    div.style.pixelTop = event.y - relativeY;
    div.style.display = "";}
    }
    catch(e)
    {
    }
        }
    </script>
    </HEAD>
    <body onload="init()">
    </body>
    </HTML>
      

  8.   

    谢谢楼上的,我试过了,可以工作,不过效果还是不能让人满意。主要是当鼠标移出窗口后,item会消失,直到放开鼠标后才会从新出现。我想我还是用div伪装一个window吧。但不管怎么谢谢了。分一会给你加上