100分求教高手:如何把一个div层从frameset下的一个frame随鼠标托动到另一个frame中。 鼠标拖动只能限于在一个窗口内,除非用createPopup还有可能实现。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我想这样应该可以解决:在frame2中也定义一个隐藏的div层,当frame1中的div层随鼠标移动进入到frame2中时,将移动的div层内容拷贝到frame2中隐藏的div中并显示,同时隐藏frame1中的div层,我觉得这个想法应该可以行的通,不过要想做到像在同一个页面中拖动div那样的连续非跳跃的效果就非常麻烦了。 你应该利用top,即这两个页面的parent作为中间的介质。即鼠标拖动划出左边时,将层的信息写到parent里去,在右边鼠标拖动的时候去判断一下parent,若有信息则表示是从左边拖过来的,这样就可以从左边的页面里得到拖动的信息,在右边重现出来,即完成了跨框架拖动 一个简单的实现,看代码应该明白如何实现了: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 你这个在效果上并没有实现,拖动的框还在left.htm中,让对象跨框架?不可能,除非模拟,我倒是想知道meizz怎么实现 Meizz的想法是美好的,实现是极其麻烦的。如果基于iframe的话就好搞多了,在拖动的时候把层直接克隆的top的dom上面再移动,不受iframe窗口的限制。放开的时候再决定放到那个iframe里面。 求助@@!! JQure 入门 帮忙看看 append怎么添加换行符 找人解释这段JSP代码 如何用JAVASCRIPT 实现歌曲联系播放? 子页面怎么获得它的父框架的ID javascript放在<head>内与放在<body内有何不同? 请问怎样关闭多个子窗口中某一个? 麻烦各位了! 子元素阻止冒泡对祖辈元素本身同类事件的影响,祖辈元素移出事件无法正常响应 onclick事件的问题 关于这段代码缺少标识符问题
-------------------------------------------
<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
让对象跨框架?不可能,除非模拟,我倒是想知道meizz怎么实现