鼠标拖动只能限于在一个窗口内,
除非用createPopup还有可能实现。

解决方案 »

  1.   

    我想这样应该可以解决:在frame2中也定义一个隐藏的div层,当frame1中的div层随鼠标移动进入到frame2中时,将移动的div层内容拷贝到frame2中隐藏的div中并显示,同时隐藏frame1中的div层,我觉得这个想法应该可以行的通,不过要想做到像在同一个页面中拖动div那样的连续非跳跃的效果就非常麻烦了。
      

  2.   

    你应该利用top,即这两个页面的parent作为中间的介质。即鼠标拖动划出左边时,将层的信息写到parent里去,在右边鼠标拖动的时候去判断一下parent,若有信息则表示是从左边拖过来的,这样就可以从左边的页面里得到拖动的信息,在右边重现出来,即完成了跨框架拖动
      

  3.   

    一个简单的实现,看代码应该明白如何实现了:index.htm:
    -------------------------------------------
    <frameset rows="*" cols="160,*" framespacing="0" frameborder="yes" border="1">
      <frame src="left.htm" name="leftFrame" scrolling="No" noresize="noresize" id="leftFrame" />
      <frame src="main.htm" name="mainFrame" id="mainFrame" />
    </frameset>
    left.htm
    -----------------------------------------------
    <script language="javascript">
    var down = false; //表示鼠标状态
    var mDiv;//要拖动的对象
    var temp;//拖动对象的替身
    var fw = 160; //leftFrame的显示宽度
    var startX = 0; startY = 0;startLeft = 0;startTop = 0;  function mouseUp()
    {  
       down = false;  
       createShortCut();
       document.body.removeChild(temp);
       temp=null;
    }  function moveDiv()
    {  
    if (down)
    {      
    temp.style.pixelLeft = startLeft+event.clientX-startX;  
    temp.style.pixelTop = startTop+event.clientY-startY;  
    } } //鼠标按下,创建一个临时对象,获得移动位置;
    function mouseDown()
    {  
       if (event.srcElement.id.indexOf("menu")!=-1)
       {
        down = true;  
    mDiv = event.srcElement;  //确定被拖动的对象
    temp = document.createElement("DIV");
    document.body.appendChild(temp);
    if(mDiv.tagName=="DIV")
    {
    temp.style.cssText=mDiv.style.cssText+"width:"+mDiv.offsetWeight+"px;height:"+mDiv.offsetHeight+"px;border:1px dashed #F00";
    startX = event.clientX;  
    startY = event.clientY;  
    startLeft = temp.style.pixelLeft;  
    startTop = temp.style.pixelTop;  
    }
       }
       else
        mDiv=document.createElement("P");
    }  function createShortCut()
    {
    var frm=parent.frames["mainFrame"];
    var shortCut=frm.document.createElement("DIV");
    shortCut.id="shortCut_"+mDiv.getAttribute("id");
    shortCut.style.cssText=temp.style.cssText;
    shortCut.style.pixelLeft =temp.style.pixelLeft-fw;
    shortCut.innerHTML=mDiv.innerHTML;
    frm.document.body.appendChild(shortCut);
    }
    </script></head><body onmousedown="mouseDown()" onmousemove="moveDiv()" onmouseup="createShortCut();mouseUp()"> 
    leftFrame
    <div id="menu1" style="position:absolute;top:30pt;left:10pt;cursor:move;width:100px;background-color:#0CF;border:1px solid #999"><img src="menu1.gif" align="absmiddle"><a href="main.htm" target="mainFrame">main.htm</a></div>main.htm
    ------------------------------------------
    mainFrame
      

  4.   

    你这个在效果上并没有实现,拖动的框还在left.htm中,
    让对象跨框架?不可能,除非模拟,我倒是想知道meizz怎么实现
      

  5.   

    Meizz的想法是美好的,实现是极其麻烦的。如果基于iframe的话就好搞多了,在拖动的时候把层直接克隆的top的dom上面再移动,不受iframe窗口的限制。放开的时候再决定放到那个iframe里面。