祝:大家元旦快乐,顺便问个问题。。。
<html>
<head>
<style type="text/css">
#wc, #wc1 {
z-index:1;
position:absolute;
height:150px;
width:200px;
background-color:#F4FAFF;
border:#CCCCCC 1px dashed;
cursor:move;
}
#wc1 {
top:100px;
left:100px;
}
</style>
<script type="text/javascript">
/*我想问下怎么判断鼠标越出浏览器,因为在FF鼠标越出浏览器时,就捕获不到了。
代码如下 - -#貌似有点多。。*/
function Drag() {
var event, obj, ox, oy;
var allLeft, allTop;
var scrollTop, scrollLeft, scrollRight, scrollBottom;
function startDrag(e) {
//当按下时初始化参数
event = window.event || e;
obj = event.srcElement || event.target
allLeft = document.body.scrollLeft;
allTop = document.body.scrollTop;
ox = allLeft + event.clientX - obj.offsetLeft;
oy = allTop + event.clientY - obj.offsetTop;
scrollLeft = allLeft + ox + 1;
scrollTop = allTop + oy + 1;
scrollRight = allLeft + document.body.clientWidth - obj.clientWidth + ox - 3;
scrollBottom = allTop + document.body.clientHeight - obj.clientHeight + oy - 2;
document.onmousemove = moveDrag;
}
function moveDrag(e) {
//鼠标移动时改变obj的位置
var e = window.event || e;
var x = allLeft + e.clientX, y = allTop + e.clientY;
var nx = (scrollRight > x ? (scrollLeft < x ? x : scrollLeft) : scrollRight);
var ny = (scrollBottom > y ? (scrollTop < y ? y : scrollTop) : scrollBottom);
obj.style.left = nx - ox + "px";
obj.style.top = ny - oy + "px";
if (x < allLeft || x > allLeft + document.body.clientWidth ||
y < allTop || y > allTop + document.body.clientHeight) {
stopDrag();
}
}
function stopDrag() {
//当松开时清除onmousemove方法
document.onmousemove = null;
}
this.add = function (o) {
//添加对象
o.onmousedown = startDrag;
o.onmouseup = stopDrag;
//o.onmouseout = stopDrag; //此句加上即可判断FF上鼠标越出窗口,可是就会出现新的问题。。。
};
}
function $(id) {
return document.getElementById(id);
}
window.onload = function () {
var drag = new Drag();
drag.add($("wc"));
drag.add($("wc1"));
drag = null;
}
//此代码复制保存htm即可测试。
</script>
</head>
<body>
<div id="wc"></div>
<div id="wc1"></div>
</body>
</html>