祝:大家元旦快乐,顺便问个问题。。。

muxrwc 2006-12-31 05:21:01
<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>
...全文
319 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
muxrwc 2007-01-30
  • 打赏
  • 举报
回复
<html>
<head>
<style type="text/css">
body {
margin:0px;
height:100%;
}
#wc_title {
width:100px;
height:20px;
background-color:#DCE2F1;
margin-bottom:5px;
/*cursor:move;*/
}
.wc {
z-index:100;
position:absolute;
width:100px;
height:60px;
background:#F0F8FF;
border:#CCCCCC 1px solid;
text-align:center;
font-size:12px;
}
* {
margin: 0;
padding: 0;
}
html, body {
height: 100%;
}
#contents {
min-height: 100%; /*contents是外层框格*/
}
* html #contents {
height: 100%;
}
</style>
<script type="text/javascript">

function Drag() {
var obj;

function startDrag(e) {
//当按下时初始化参数
var e = window.event || e;
obj = this.root;
obj.x = e.clientX;
obj.y = e.clientY;
document.onmousemove = moveDrag;
document.onmouseup = stopDrag;
}

function moveDrag(e) {
//鼠标移动时改变obj的位置
var e = window.event || e;
obj.style.left = obj.offsetLeft - obj.x + (obj.x = e.clientX) + "px";
obj.style.top = obj.offsetTop - obj.y + (obj.y = e.clientY) + "px";

}

function stopDrag() {
//当松开时清除onmousemove方法
document.onmousemove = document.onmouseup = null;
}

this.add = function (o, root) {
//添加对象
o.root = root ? root : o;
o.onmousedown = startDrag;
};
}

function $(id) {
return document.getElementById(id);
}

window.onload = function () {
var drag = new Drag();
drag.add($("wc_title"), $("wc"));
drag.add($("wcs"));
drag = null;
};
</script>
</head>
<body>
<div id="wc" class="wc"><div id="wc_title"><img width="1" height="1" /><!--郁闷,必须要有内容否则FF拖不出浏览器--></div>传说中的Drag</div>
<div id="wcs" class="wc"><img width="1" height="1" /></div>
</body>
</html>
muxrwc 2007-01-05
  • 打赏
  • 举报
回复
我指的是当鼠标移出浏览器。然后松开,你在移动回去,就会出现异常。。
结贴
muxrwc 2007-01-04
  • 打赏
  • 举报
回复
T_T
沉低了。。
有米好心 && 有空的兄弟告诉我啊。。
heroooooo 2007-01-04
  • 打赏
  • 举报
回复
去掉这句o.onmouseout = stopDrag;不行吗??
修改你的:
<html>
<head>
<style type="text/css">
#wc{
z-index:0;
position:absolute;
height:150px;
width:200px;
background-color:#F4FAFF;
border:#CCCCCC 1px dashed;
cursor:move;
}
</style>
<script type="text/javascript">
function Drag() {
var event, obj, ox, oy;
var scrollWidth, scrollHeight;
function startDrag(e) {
//当按下时初始化参数
event = window.event || e;
obj = event.srcElement || event.target
ox = event.clientX - obj.offsetLeft;
oy = event.clientY - obj.offsetTop;
scrollLeft = document.body.scrollLeft + ox + 1;
scrollTop = document.body.scrollTop + oy + 1;
scrollWidth = document.body.scrollLeft + document.body.clientWidth - obj.clientWidth + ox - 2;
scrollHeight = document.body.scrollTop + document.body.clientHeight - obj.clientHeight + oy - 2;
document.onmousemove = moveDrag;
}

function moveDrag(e) {
//鼠标移动时改变obj的位置
var e = window.event || e;
var nx = (scrollWidth > e.clientX ? e.clientX : scrollWidth);
var ny = (scrollHeight > e.clientY ? e.clientY : scrollHeight);


nx = (nx<scrollLeft ? scrollLeft : nx);
ny = (ny<scrollTop ? scrollTop : ny);

obj.style.left = nx - ox;
obj.style.top = ny - oy;
}

function stopDrag() {
//当松开时清除onmousemove方法
document.onmousemove = null;
}

this.add = function (o) {
//添加对象
o.onmousedown = startDrag;
o.onmouseup = stopDrag;
};
}

function $(id) {
return document.getElementById(id);
}

window.onload = function () {
var drag = new Drag();
drag.add($("wc"));
drag = null;
}
</script>
</head>
<body>
<div id="wc"></div>
</body>
</html>

我用Firefox好象没有出现什么问题??
muxrwc 2007-01-04
  • 打赏
  • 举报
回复
哈哈,我回来了,貌似没有人知道啊。。。我看126的那个在IE里面可以Drag,但是到FF里就不让Drag了。。。
hero4u 2007-01-04
  • 打赏
  • 举报
回复
哈哈,接分●︶ε︶●
lz快去开发IE,到时候可以支持了告诉我一下阿
  • 打赏
  • 举报
回复
赶来接分:D
muxrwc 2007-01-04
  • 打赏
  • 举报
回复
噢。。。。
T_T
死心了。。
因为当鼠标跨出浏览器后松开然后移动回来,就会出现异常。。
所以就想把这个Bug修改掉。
看来是没希望了T_T
明天结帖。。。。。。
孟子E章 2007-01-04
  • 打赏
  • 举报
回复
跨出浏览器后获取onmouseup?
好像没有办法
ishion 2007-01-04
  • 打赏
  • 举报
回复
再找找看啊
webmm 2007-01-04
  • 打赏
  • 举报
回复
接分为主,看看为辅 :P
muxrwc 2007-01-04
  • 打赏
  • 举报
回复
汗。。我就是想问问在FF当鼠标跨出浏览器后怎么获取onmouseup。。。
IE中用document.onmouseup能获取到。。。。。。
可是在FF中就不可以了。。。无奈。。
T_T
btbtd 2007-01-04
  • 打赏
  • 举报
回复
哦...俺没写 拖曳XXX,,,这个实在不知道有什么用处, 浪费时间在没啥用处的东西上是不可能滴...
懒得去死 2007-01-04
  • 打赏
  • 举报
回复


元旦快乐
yyjzsl 2007-01-01
  • 打赏
  • 举报
回复
新年快乐!
kut00 2007-01-01
  • 打赏
  • 举报
回复
元旦快乐
btbtd 2006-12-31
  • 打赏
  • 举报
回复
哈哈, 看你这问题, 那我打算弄个拖曳类出来了...
不过不是现在, 这两天写了不少类...思维迟钝...
btbtd 2006-12-31
  • 打赏
  • 举报
回复
元旦快乐
csharpxml 2006-12-31
  • 打赏
  • 举报
回复
up
muxrwc 2006-12-31
  • 打赏
  • 举报
回复
。。。如果要能处理我就不问了。。(快升星星了,留点分散)
用了它会出现好多莫名其妙的问题。
比如我小甩一下(用CS里甩AWP的力度就可以)
不仅这样还会有别的问题呢。。忽忽。。。。
加载更多回复(1)

87,922

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧