<!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=gb2312" />
<title></title>
<head>
<style>
body{
margin:0px;
padding:0px;
}
#drag {
position:absolute;
cursor:pointer;
}
</style>
<script language="JavaScript">
function drags(){
var z= event.srcElement || event.target;
temp1=z.style.pixelLeft
temp2=z.style.pixelTop
x=event.clientX
y=event.clientY
document.onmousemove=function(){
if (event.button==1){
z.style.pixelLeft=temp1+event.clientX-x
z.style.pixelTop=temp2+event.clientY-y
var newclientwidth = parseInt(document.documentElement.clientWidth)-parseInt(z.style.width);
var newclientheight = parseInt(document.documentElement.clientHeight)-parseInt(z.style.height);
if(z.style.pixelTop>newclientheight){
z.style.pixelTop = newclientheight
}else if(z.style.pixelTop<=0){
z.style.pixelTop = 0
}
if(z.style.pixelLeft>newclientwidth ){
z.style.pixelLeft = newclientwidth
}else if(z.style.pixelLeft<=0){
z.style.pixelLeft = 0
}
}
}
}
</script>
</head>
<body>
<div id="drag" style="width:158px; height:150px; background:#0066CC;" onmousedown="drags()" ></div>
</body>
</html>
你可以参考网上的兼容性教程
这样就兼容了。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>www.jb51.net 拖动层效果代码</title>
<script>
var obj=0;
var x=0;
var y=0;
var ie = (navigator.appVersion.indexOf("MSIE")!=-1);//IE
var ff = (navigator.userAgent.indexOf("Firefox")!=-1);//Firefox
function find(evt,objDiv){
obj = objDiv
if (ff){
x = document.documentElement.scrollLeft + evt.layerX;
y = document.documentElement.scrollTop + evt.layerY;
if (document.documentElement.scrollTop > 0){
y = evt.layerY - document.documentElement.scrollTop;
}
if (document.documentElement.scrollLeft > 0){
x = evt.layerX - document.documentElement.scrollLeft;
}
}
if (ie){
x = document.documentElement.scrollLeft + evt.offsetX;
y = document.documentElement.scrollTop + evt.offsetY;
if (document.documentElement.scrollTop > 0){
y = evt.offsetY - document.documentElement.scrollTop;
}
if (document.documentElement.scrollLeft > 0){
x = evt.offsetX - document.documentElement.scrollLeft;
}
}
}
function dragit(evt){
if(obj == 0){
return false
}
else{
obj.style.left = evt.clientX - x + "px";
obj.style.top = evt.clientY - y + "px";
}
}
</script>
</head>
<body style="margin:0" onmousemove="dragit(event)" onmouseup="obj = 0"> <div id="aaa" style="background-color:red;width:200pt;height:200pt;position:absolute">
<div id="aa" style="width:200pt;height:20pt;background:blue;position:absolute" onmousedown="find(event,document.getElementById('aaa'))"></div>
</div>
</body>
</html>
这样,楼主你仿照着把你的改改,我没有改成你的代码
js中: function drags(event) {
if (startTag) {
var currentX = event.x ? event.x : event.pageX;
var currentY = event.y ? event.y : event.pageY;
....................
}
var mY;
var tX;
var tY;
var startTag = false;
var initialposX;
var initialposY;
var target;
var lastnode = null;
var initialwidth = 405;
var a = new Object();
function posMouse(event) {
if (startTag) {
// var target = document.getElementById('target'); var currentX = event.x ? event.x : event.pageX;
var currentY = event.y ? event.y : event.pageY;
var container = document.getElementById('container');
// alert(container.offsetLeft);
// alert(container.offsetTop);
if (currentX) {
if ((initialposX + (currentX - mX)) < container.offsetLeft) {
target.style.left = container.offsetLeft;
} else if ((initialposX + (currentX - mX)) > container.offsetLeft
+ container.clientWidth - target.clientWidth) {
target.style.left = container.offsetLeft
+ container.clientWidth - target.clientWidth; } else {
target.style.left = initialposX + (currentX - mX) + 'px';
}
if (target.offsetLeft <= 0) {
target.style.left = '0px';
}
}
// alert((initialposX + (currentX - mX)) > container.offsetTop
// + container.clientHeight - target.clientHeight);
if (currentY) {
if ((initialposY + (currentY - mY)) < container.offsetTop) {
target.style.top = container.offsetTop;
} else if ((initialposY + (currentY - mY)) > container.offsetTop
+ container.clientHeight - target.clientHeight) {
//alert('ok');
target.style.top = container.offsetTop + container.clientHeight
- target.clientHeight;
} else {
target.style.top = initialposY + (currentY - mY) + 'px';
}
if (target.offsetTop <= 0) {
target.style.top = '0px';
}
}
// target.style.left ='200px'; }
}
function start(event) {
if (lastnode == null) {
} else {
lastnode.style.zIndex = 0;
}
startTag = true;
var obj = event.srcElement ? event.srcElement : event.target;
obj.style.cursor = 'move';
target = obj.parentNode;
target.style.zIndex = 2;
// target = document.getElementById('target');
mX = event.x ? event.x : event.pageX;
mY = event.y ? event.y : event.pageY;
initialposX = target.offsetLeft;
initialposY = target.offsetTop;
// alert(tX);
// alert(tY);
}
function stop(event) { var obj2 = event.srcElement ? event.srcElement : event.target;
obj2.style.cursor = 'default';
lastnode = target;
startTag = false;
}
function changepic(event) {
var obj2 = event.srcElement ? event.srcElement : event.target; if (obj2.src.match('hover.png') == null) {
obj2.src = obj2.src.replace('.png', 'hover.png');
} else {
obj2.src = obj2.src.replace('hover.png', '.png');
}}function emptyscreen(event) {
// document.getElementsByTagName(tagname)
var minpic = event.srcElement ? event.srcElement : event.target;
var Pminnode = minpic.parentNode.parentNode;
Pminnode.style.height = minpic.clientHeight + 'px';
Pminnode.style.width = 200 + 'px';
Pminnode.style.left = 0 + 'px';
Pminnode.style.top = 0 + 'px';
Pminnode.style.zIndex = 1;
Pminnode.getElementsByTagName('div')[0].style.width = 107 + 'px';
}
function fullscreen(event) {
var maxpic = event.srcElement ? event.srcElement : event.target;
var Pwidth = maxpic.parentNode.parentNode.style.width;
if (Number(Pwidth.substring(0, Pwidth.length - 2)) <= initialwidth) { var windowHeight = window.screen.availHeight;// window.screen.availHeight
var widnowwidth = window.screen.availWidth;// window.screen.availWidth
var Pnode = maxpic.parentNode.parentNode;
Pnode.style.height = Number(windowHeight - 150) + 'px';
Pnode.style.width = Number(widnowwidth - 25) + 'px';
Pnode.style.left = 0 + 'px';
Pnode.style.top = 0 + 'px';
Pnode.style.zIndex = 3;
Pnode.getElementsByTagName('div')[0].style.width = Number(widnowwidth - 25 - 93) + 'px';
} else { maxpic.parentNode.parentNode.style.height = 400 + 'px';
maxpic.parentNode.parentNode.style.width = 405 + 'px';
maxpic.parentNode.parentNode.style.left = 100 + 'px';
maxpic.parentNode.parentNode.style.top = 100 + 'px';
maxpic.parentNode.parentNode.style.zIndex = 2;
maxpic.parentNode.parentNode.getElementsByTagName('div')[0].style.width = '77%';
}
}function block(oEvent) {
if (window.event) {
oEvent = window.event;
oEvent.returnValue = false;
} else {
oEvent.preventDefault();
}
}
document.oncontextmenu = block;
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>div manipulation</title>
<script src="code4.js" type="text/javascript"></script>
<style type="text/css">
.target {
position: absolute;
left:100px;
top:100px;
background-color:pink;
width: 405px;
height: 400px;
border:solid 2px ;
}
div img{
float:right;
}
.move1 {
height:17px;
background: green;
float: left;
width: 77%;
}
.move2 {
height:17px;
background: yellow;
float: left;
width: 77%;}
</style></head>
<body >
<div id="container" style=" margin-left:100px;margin-top:px; width:1000px;height:800px;background-color: red;" onmouseup="stop(event);" onmousemove="posMouse(event)" >
<div class="target" style="">
<div class="move1" onmouseup="stop(event);" onmousedown="start(event)"></div><div>
<img alt="" src="img/closed.png" onclick="" onmouseout="changepic(event)" onmouseover="changepic(event)" >
<img alt="" src="img/maximized.png" onclick="fullscreen(event);" onmouseout="changepic(event)" onmouseover="changepic(event)">
<img alt="" src="img/minimized.png" onclick="emptyscreen(event);" onmouseout="changepic(event)" onmouseover="changepic(event)">
</div>
</div>
</div>
</body>
</html>