如何在iframe上实现div拖拽? 右边拖拽很流畅但在左边的iframe里就卡的要死 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 兄弟你试试这个哦!!<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>Untitled Document</title><style type="text/css"><!--.drag{position:absolute;width:200px; background-color:green;height:120px;z-index:1;}.da{width:100%;height:20px;background-color:black;color:white;cursor:move;}.x{float:right;color:red;cursor:pointer;}--></style></head><body><div class="drag" rel="drag" id="drag1" style="left:30px;top:10px;" onmousedown="dargit(this,event);"> TEST</div><iframe src="about:blank" id="mainFrame" height="100%" width="50%"></iframe><script type="text/javascript">var ey=0,ex=0,lx=0,ly=0,canDrg=false,thiso=null;//var x, y,rw,rh; var divs=document.getElementsByTagName("div"); for (var i=0;i<divs.length;i++){ if(divs[i].getAttribute("rel")=="drag"){ divs[i].onmousemove=function(){ thismove(this); } } }function thismove(o){ rw=parseInt(x)-parseInt(o.style.left); rh=parseInt(y)-parseInt(o.style.top); document.title=rw+"=ı="+rh; if(rh<=20 && rw>=180)document.title=rw+"||20*20||"+rh; if(rh<=20 && rw<180 )document.title=rw+"||ѡ||"+rh;}function dargit(o,e){thiso = o;canDrg = true; if(!document.all){ lx = e.clientX; ly = e.clientY; }else{ lx = event.x; ly = event.y; } if(document.all) thiso.setCapture(); st(o); }document.onmousemove = function(e){if(!document.all){ x = e.clientX; y = e.clientY; }else{ x = event.x; y = event.y; }if(canDrg){ var ofsx = x - lx; thiso.style.left = parseInt(thiso.style.left) + ofsx; lx = x; var ofsy = y - ly; thiso.style.top = parseInt(thiso.style.top) + ofsy; ly = y;}}document.onmouseup=function(){ canDrg=false; if(document.all && thiso != null){ thiso.releaseCapture(); thiso = null; }}function set(obj){ obj=obj.parentNode.parentNode; if(obj.getAttribute("rel")); }function st(o){var p = o.parentNode;if(p.lastChild != o){ p.appendChild(o);}if(rh<=20 && rw>=180){canDrg=false; window.status=rw+"|"+rh; if(p.firstChild == o) return; p.insertBefore(o, p.firstChild); }}</script></body></html> 非常谢谢!ie下使用setCapture()就好用了但是firefox里面,在iframe上拖拽还是很卡用这个也没有效果,奇怪window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP); <html><head><title>_xWin</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><META NAME="Description" CONTENT="http://www.51windows.Net"><style type='text/css'><!--body{font-size:12px;}a:visited{text-decoration:none;color:slategray;}a:hover{text-decoration:underline;color:slategray;}a:link{text-decoration:none;color:slategray;}--></style><script language=JScript><!--//可以打包为js文件;var x0=0,y0=0,x1=0,y1=0;var offx=6,offy=6;var moveable=false;var hover='orange',normal='#336699';//color;var index=10000;//z-index;//开始拖动;function startDrag(obj){ if(event.button==1) { //锁定标题栏; obj.setCapture(); //定义对象; var win = obj.parentNode; var sha = win.nextSibling; //记录鼠标和层位置; x0 = event.clientX; y0 = event.clientY; x1 = parseInt(win.style.left); y1 = parseInt(win.style.top); //记录颜色; normal = obj.style.backgroundColor; //改变风格; obj.style.backgroundColor = hover; win.style.borderColor = hover; obj.nextSibling.style.color = hover; sha.style.left = x1 + offx; sha.style.top = y1 + offy; moveable = true; }}//拖动;function drag(obj){ if(moveable) { var win = obj.parentNode; var sha = win.nextSibling; win.style.left = x1 + event.clientX - x0; win.style.top = y1 + event.clientY - y0; sha.style.left = parseInt(win.style.left) + offx; sha.style.top = parseInt(win.style.top) + offy; }}//停止拖动;function stopDrag(obj){ if(moveable) { var win = obj.parentNode; var sha = win.nextSibling; var msg = obj.nextSibling; win.style.borderColor = normal; obj.style.backgroundColor = normal; msg.style.color = normal; sha.style.left = obj.parentNode.style.left; sha.style.top = obj.parentNode.style.top; obj.releaseCapture(); moveable = false; }}//获得焦点;function getFocus(obj){ if(obj.style.zIndex!=index) { index = index + 2; var idx = index; obj.style.zIndex=idx; obj.nextSibling.style.zIndex=idx-1; }}//最小化;function min(obj){ var win = obj.parentNode.parentNode; var sha = win.nextSibling; var tit = obj.parentNode; var msg = tit.nextSibling; var flg = msg.style.display=="none"; if(flg) { win.style.height = parseInt(msg.style.height) + parseInt(tit.style.height) + 2*2; sha.style.height = win.style.height; msg.style.display = "block"; obj.innerHTML = "0"; } else { win.style.height = parseInt(tit.style.height) + 2*2; sha.style.height = win.style.height; obj.innerHTML = "2"; msg.style.display = "none"; }}//创建一个对象;function xWin(id,w,h,l,t,tit,msg){ index = index+2; this.id = id; this.width = w; this.height = h; this.left = l; this.top = t; this.zIndex = index; this.title = tit; this.message = msg; this.obj = null; this.bulid = bulid; this.bulid();}//初始化;function bulid(){ var str = "" + "<div id=xMsg" + this.id + " " + "style='" + "z-index:" + this.zIndex + ";" + "width:" + this.width + ";" + "height:" + this.height + ";" + "left:" + this.left + ";" + "top:" + this.top + ";" + "background-color:" + normal + ";" + "color:" + normal + ";" + "font-size:8pt;" + "font-family:Tahoma;" + "position:absolute;" + "cursor:default;" + "border:2px solid " + normal + ";" + "' " + "onmousedown='getFocus(this)'>" + "<div " + "style='" + "background-color:" + normal + ";" + "width:" + (this.width-2*2) + ";" + "height:20;" + "color:white;" + "' " + "onmousedown='startDrag(this)' " + "onmouseup='stopDrag(this)' " + "onmousemove='drag(this)' " + "ondblclick='min(this.childNodes[1])'" + ">" + "<span style='width:" + (this.width-2*12-4) + ";padding-left:3px;'>" + this.title + "</span>" + "<span style='width:12;border-width:0px;color:white;font-family:webdings;' onclick='min(this)'>0</span>" + "<span style='width:12;border-width:0px;color:white;font-family:webdings;' onclick='ShowHide(\""+this.id+"\",null)'>r</span>" + "</div>" + "<div style='" + "width:100%;" + "height:" + (this.height-20-4) + ";" + "background-color:white;" + "line-height:14px;" + "word-break:break-all;" + "padding:3px;" + "'>" + this.message + "</div>" + "</div>" + "<div id=xMsg" + this.id + "bg style='" + "width:" + this.width + ";" + "height:" + this.height + ";" + "top:" + this.top + ";" + "left:" + this.left + ";" + "z-index:" + (this.zIndex-1) + ";" + "position:absolute;" + "background-color:black;" + "filter:alpha(opacity=40);" + "'></div>"; document.body.insertAdjacentHTML("beforeEnd",str);}//显示隐藏窗口function ShowHide(id,dis){ var bdisplay = (dis==null)?((document.getElementById("xMsg"+id).style.display=="")?"none":""):dis document.getElementById("xMsg"+id).style.display = bdisplay; document.getElementById("xMsg"+id+"bg").style.display = bdisplay;}//modify by haiwa @ 2005-7-14 //http://www.51windows.Net//--></script><script language='JScript'><!--function initialize(){ var a = new xWin("1",160,200,200,200,"窗口1","xWin <br> A Cool Pop Div Window<br>Version:1.0<br>2002-8-13"); var b = new xWin("2",240,200,100,100,"窗口2","Welcome to visited my personal website:<br><a href=http://www14.brinkster.com/wildcity target=_blank>http://wildcity.126.com</a><br>and u can also sign my guestbook at:<br><a href=http://www14.brinkster.com/wildcity/gbook target=_blank>http://wildcity.126.com/gbook</a><br><br>thx!!! =)..."); var c = new xWin("3",200,160,250,50,"窗口3","Copyright by <a href='mailto:[email protected]'>Wildwind</a>!"); ShowHide("1","none");//隐藏窗口1}window.onload = initialize;//--></script></head><base target="_blank"><body onselectstart='return false' oncontextmenu='return false' ><a onclick="ShowHide('1',null);return false;" href="">窗口1</a><a onclick="ShowHide('2',null);return false;" href="">窗口2</a><a onclick="ShowHide('3',null);return false;" href="">窗口3</a></body></html> 谢谢楼上朋友的代码但是在firefox里面不好用 我修改了一下dom-drag.js将69-70行 document.onmousemove = Drag.drag; document.onmouseup = Drag.end;改成 if(document.all) { o.setCapture(); o.onmousemove = Drag.drag; } else { window.onmousemove = Drag.drag; for(i=0;i<window.frames.length;i++) { window.frames[i].onmousemove = Drag.drag; } } 楼上的星星:setCapture();和releaseCapture();在ie里面很好用有办法解决firefox的问题吗?让他在iframe上拖拽也不卡 先谢谢你!代码试过了,firefox的iframe里拖拽还是很卡另外没有释放鼠标事件我看一篇文章说firefox里可以这样锁定鼠标事件window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);但是并不好用 在firefox里运行这段代码,很明显的<html><script type="text/javascript" src="dom-drag.js"></script><iframe src="http://www.google.com/search?q=javascript" id="mainFrame" height="100%" width="80%"></iframe><div id="test" style="position:absolute; cursor:move">不能在IFRAME上拖拽</div><script>Drag.init(document.getElementById("test"));</script></html> firefox错误控制台的信息错误: uncaught exception: ???? Window.onmousemove ???? JS控制表单问题 Ext上传文件问题 请教关于iframe 关于js代码的写法问题??? jquery中slideup和slidedown的用法中的疑问?(在线等,妈上给分) 请教name在javascript里到底是做什么的 在两个新打开的IE里,用JS如何通信,急求!! 分享:Javascript内置方法十分方便的进行数值进制转换 怎样进行四舍五入 是否有這樣的做法? firefox怎么把input type=file节点添加到form节点下 怎么样改复选框内那“勾”的颜色?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<style type="text/css">
<!--
.drag{position:absolute;width:200px; background-color:green;height:120px;z-index:1;}
.da{width:100%;height:20px;background-color:black;color:white;cursor:move;}
.x{float:right;color:red;cursor:pointer;}
-->
</style>
</head><body>
<div class="drag" rel="drag" id="drag1" style="left:30px;top:10px;" onmousedown="dargit(this,event);">
TEST
</div>
<iframe src="about:blank" id="mainFrame" height="100%" width="50%"></iframe><script type="text/javascript">
var ey=0,ex=0,lx=0,ly=0,canDrg=false,thiso=null;//
var x, y,rw,rh;
var divs=document.getElementsByTagName("div");
for (var i=0;i<divs.length;i++){
if(divs[i].getAttribute("rel")=="drag"){
divs[i].onmousemove=function(){
thismove(this);
}
}
}function thismove(o){
rw=parseInt(x)-parseInt(o.style.left);
rh=parseInt(y)-parseInt(o.style.top);
document.title=rw+"=ı="+rh;
if(rh<=20 && rw>=180)document.title=rw+"||20*20||"+rh;
if(rh<=20 && rw<180 )document.title=rw+"||ѡ||"+rh;
}
function dargit(o,e){
thiso = o;
canDrg = true;
if(!document.all){
lx = e.clientX; ly = e.clientY;
}else{
lx = event.x; ly = event.y;
}
if(document.all) thiso.setCapture();
st(o);
}document.onmousemove = function(e){
if(!document.all){ x = e.clientX; y = e.clientY; }else{ x = event.x; y = event.y; }
if(canDrg){
var ofsx = x - lx;
thiso.style.left = parseInt(thiso.style.left) + ofsx;
lx = x;
var ofsy = y - ly;
thiso.style.top = parseInt(thiso.style.top) + ofsy;
ly = y;
}
}document.onmouseup=function(){
canDrg=false;
if(document.all && thiso != null){
thiso.releaseCapture();
thiso = null;
}
}
function set(obj){
obj=obj.parentNode.parentNode;
if(obj.getAttribute("rel"));
}
function st(o){var p = o.parentNode;
if(p.lastChild != o){
p.appendChild(o);
}if(rh<=20 && rw>=180){
canDrg=false;
window.status=rw+"|"+rh;
if(p.firstChild == o) return;
p.insertBefore(o, p.firstChild);
}
}</script>
</body>
</html>
window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
<head>
<title>_xWin</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<META NAME="Description" CONTENT="http://www.51windows.Net">
<style type='text/css'>
<!--
body{font-size:12px;}
a:visited{text-decoration:none;color:slategray;}
a:hover{text-decoration:underline;color:slategray;}
a:link{text-decoration:none;color:slategray;}
-->
</style>
<script language=JScript>
<!--
//可以打包为js文件;
var x0=0,y0=0,x1=0,y1=0;
var offx=6,offy=6;
var moveable=false;
var hover='orange',normal='#336699';//color;
var index=10000;//z-index;
//开始拖动;
function startDrag(obj)
{
if(event.button==1)
{
//锁定标题栏;
obj.setCapture();
//定义对象;
var win = obj.parentNode;
var sha = win.nextSibling;
//记录鼠标和层位置;
x0 = event.clientX;
y0 = event.clientY;
x1 = parseInt(win.style.left);
y1 = parseInt(win.style.top);
//记录颜色;
normal = obj.style.backgroundColor;
//改变风格;
obj.style.backgroundColor = hover;
win.style.borderColor = hover;
obj.nextSibling.style.color = hover;
sha.style.left = x1 + offx;
sha.style.top = y1 + offy;
moveable = true;
}
}
//拖动;
function drag(obj)
{
if(moveable)
{
var win = obj.parentNode;
var sha = win.nextSibling;
win.style.left = x1 + event.clientX - x0;
win.style.top = y1 + event.clientY - y0;
sha.style.left = parseInt(win.style.left) + offx;
sha.style.top = parseInt(win.style.top) + offy;
}
}
//停止拖动;
function stopDrag(obj)
{
if(moveable)
{
var win = obj.parentNode;
var sha = win.nextSibling;
var msg = obj.nextSibling;
win.style.borderColor = normal;
obj.style.backgroundColor = normal;
msg.style.color = normal;
sha.style.left = obj.parentNode.style.left;
sha.style.top = obj.parentNode.style.top;
obj.releaseCapture();
moveable = false;
}
}
//获得焦点;
function getFocus(obj)
{
if(obj.style.zIndex!=index)
{
index = index + 2;
var idx = index;
obj.style.zIndex=idx;
obj.nextSibling.style.zIndex=idx-1;
}
}
//最小化;
function min(obj)
{
var win = obj.parentNode.parentNode;
var sha = win.nextSibling;
var tit = obj.parentNode;
var msg = tit.nextSibling;
var flg = msg.style.display=="none";
if(flg)
{
win.style.height = parseInt(msg.style.height) + parseInt(tit.style.height) + 2*2;
sha.style.height = win.style.height;
msg.style.display = "block";
obj.innerHTML = "0";
}
else
{
win.style.height = parseInt(tit.style.height) + 2*2;
sha.style.height = win.style.height;
obj.innerHTML = "2";
msg.style.display = "none";
}
}
//创建一个对象;
function xWin(id,w,h,l,t,tit,msg)
{
index = index+2;
this.id = id;
this.width = w;
this.height = h;
this.left = l;
this.top = t;
this.zIndex = index;
this.title = tit;
this.message = msg;
this.obj = null;
this.bulid = bulid;
this.bulid();
}
//初始化;
function bulid()
{
var str = ""
+ "<div id=xMsg" + this.id + " "
+ "style='"
+ "z-index:" + this.zIndex + ";"
+ "width:" + this.width + ";"
+ "height:" + this.height + ";"
+ "left:" + this.left + ";"
+ "top:" + this.top + ";"
+ "background-color:" + normal + ";"
+ "color:" + normal + ";"
+ "font-size:8pt;"
+ "font-family:Tahoma;"
+ "position:absolute;"
+ "cursor:default;"
+ "border:2px solid " + normal + ";"
+ "' "
+ "onmousedown='getFocus(this)'>"
+ "<div "
+ "style='"
+ "background-color:" + normal + ";"
+ "width:" + (this.width-2*2) + ";"
+ "height:20;"
+ "color:white;"
+ "' "
+ "onmousedown='startDrag(this)' "
+ "onmouseup='stopDrag(this)' "
+ "onmousemove='drag(this)' "
+ "ondblclick='min(this.childNodes[1])'"
+ ">"
+ "<span style='width:" + (this.width-2*12-4) + ";padding-left:3px;'>" + this.title + "</span>"
+ "<span style='width:12;border-width:0px;color:white;font-family:webdings;' onclick='min(this)'>0</span>"
+ "<span style='width:12;border-width:0px;color:white;font-family:webdings;' onclick='ShowHide(\""+this.id+"\",null)'>r</span>"
+ "</div>"
+ "<div style='"
+ "width:100%;"
+ "height:" + (this.height-20-4) + ";"
+ "background-color:white;"
+ "line-height:14px;"
+ "word-break:break-all;"
+ "padding:3px;"
+ "'>" + this.message + "</div>"
+ "</div>"
+ "<div id=xMsg" + this.id + "bg style='"
+ "width:" + this.width + ";"
+ "height:" + this.height + ";"
+ "top:" + this.top + ";"
+ "left:" + this.left + ";"
+ "z-index:" + (this.zIndex-1) + ";"
+ "position:absolute;"
+ "background-color:black;"
+ "filter:alpha(opacity=40);"
+ "'></div>";
document.body.insertAdjacentHTML("beforeEnd",str);
}
//显示隐藏窗口
function ShowHide(id,dis){
var bdisplay = (dis==null)?((document.getElementById("xMsg"+id).style.display=="")?"none":""):dis
document.getElementById("xMsg"+id).style.display = bdisplay;
document.getElementById("xMsg"+id+"bg").style.display = bdisplay;
}
//modify by haiwa @ 2005-7-14
//http://www.51windows.Net
//-->
</script><script language='JScript'>
<!--
function initialize()
{
var a = new xWin("1",160,200,200,200,"窗口1","xWin <br> A Cool Pop Div Window<br>Version:1.0<br>2002-8-13");
var b = new xWin("2",240,200,100,100,"窗口2","Welcome to visited my personal website:<br><a href=http://www14.brinkster.com/wildcity target=_blank>http://wildcity.126.com</a><br>and u can also sign my guestbook at:<br><a href=http://www14.brinkster.com/wildcity/gbook target=_blank>http://wildcity.126.com/gbook</a><br><br>thx!!! =)...");
var c = new xWin("3",200,160,250,50,"窗口3","Copyright by <a href='mailto:[email protected]'>Wildwind</a>!");
ShowHide("1","none");//隐藏窗口1
}
window.onload = initialize;
//-->
</script>
</head>
<base target="_blank">
<body onselectstart='return false' oncontextmenu='return false' >
<a onclick="ShowHide('1',null);return false;" href="">窗口1</a>
<a onclick="ShowHide('2',null);return false;" href="">窗口2</a>
<a onclick="ShowHide('3',null);return false;" href="">窗口3</a>
</body>
</html>
将69-70行
document.onmousemove = Drag.drag;
document.onmouseup = Drag.end;
改成 if(document.all)
{
o.setCapture();
o.onmousemove = Drag.drag;
}
else
{
window.onmousemove = Drag.drag;
for(i=0;i<window.frames.length;i++)
{
window.frames[i].onmousemove = Drag.drag;
}
}
window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
但是并不好用
<script type="text/javascript" src="dom-drag.js"></script>
<iframe src="http://www.google.com/search?q=javascript" id="mainFrame" height="100%" width="80%"></iframe>
<div id="test" style="position:absolute; cursor:move">不能在IFRAME上拖拽</div>
<script>
Drag.init(document.getElementById("test"));
</script>
</html>
错误: uncaught exception: ???? Window.onmousemove ????