self.onError=null;currentX = currentY = 0;whichIt = null;lastScrollX = 0; lastScrollY = 0;NS = (document.layers) ? 1 : 0;IE = (document.all) ? 1: 0;
<!-- STALKER CODE -->function heartBeat() {if(IE) { diffY = document.body.scrollTop; diffX = document.body.scrollLeft; }if(NS) { diffY = self.pageYOffset; diffX = self.pageXOffset; }if(diffY != lastScrollY) {percent = .1 * (diffY - lastScrollY);if(percent > 0) percent = Math.ceil(percent);else percent = Math.floor(percent);if(IE) document.all.floater.style.pixelTop += percent;if(NS) document.floater.top += percent; lastScrollY = lastScrollY + percent;}
if(diffX != lastScrollX) {percent = .1 * (diffX - lastScrollX);if(percent > 0) percent = Math.ceil(percent);else percent = Math.floor(percent);if(IE) document.all.floater.style.pixelLeft += percent;if(NS) document.floater.left += percent;lastScrollX = lastScrollX + percent;}}<!-- /STALKER CODE --><!-- DRAG DROP CODE -->function checkFocus(x,y) { stalkerx = document.floater.pageX;stalkery = document.floater.pageY;stalkerwidth = document.floater.clip.width;stalkerheight = document.floater.clip.height;if( (x > stalkerx && x < (stalkerx+stalkerwidth)) && (y > stalkery && y < (stalkery+stalkerheight))) return true;else return false;}
function moveIt(e) {if (whichIt == null) { return false; }if(IE) {newX = (event.clientX + document.body.scrollLeft);newY = (event.clientY + document.body.scrollTop);distanceX = (newX - currentX); distanceY = (newY - currentY);currentX = newX; currentY = newY;whichIt.style.pixelLeft += distanceX;whichIt.style.pixelTop += distanceY;if(whichIt.style.pixelTop < document.body.scrollTop) whichIt.style.pixelTop = document.body.scrollTop;if(whichIt.style.pixelLeft < document.body.scrollLeft) whichIt.style.pixelLeft = document.body.scrollLeft;if(whichIt.style.pixelLeft < document.body.offsetWidth - document.body.scrollLeft - whichIt.style.pixelWidth - 20) whichIt.style.pixelLeft = document.body.offsetWidth - whichIt.style.pixelWidth - 20;if(whichIt.style.pixelTop < document.body.offsetHeight + document.body.scrollTop - whichIt.style.pixelHeight - 5) whichIt.style.pixelTop = document.body.offsetHeight + document.body.scrollTop - whichIt.style.pixelHeight - 5;event.returnValue = false;} else { whichIt.moveTo(e.pageX-StalkerTouchedX,e.pageY-StalkerTouchedY);if(whichIt.left < 0+self.pageXOffset) whichIt.left = 0+self.pageXOffset;if(whichIt.top < 0+self.pageYOffset) whichIt.top = 0+self.pageYOffset;if( (whichIt.left + whichIt.clip.width)>= (window.innerWidth+self.pageXOffset-17)) whichIt.left = ((window.innerWidth+self.pageXOffset)-whichIt.clip.width)-17;if( (whichIt.top + whichIt.clip.height) >= (window.innerHeight+self.pageYOffset-17)) whichIt.top = ((window.innerHeight+self.pageYOffset)-whichIt.clip.height)-17;return false;}return false;}function dropIt() {whichIt = null;if(NS) window.releaseEvents (Event.MOUSEMOVE);return true;}<!-- DRAG DROP CODE -->if(NS) {window.captureEvents(Event.MOUSEUP|Event.MOUSEDOWN);window.onmousedown = grabIt;window.onmousemove = moveIt;window.onmouseup = dropIt;}if(IE) {document.onmousedown = grabIt;document.onmousemove = moveIt;document.onmouseup = dropIt;}if(NS || IE) action = window.setInterval("heartBeat()",1);
<!-- STALKER CODE -->function heartBeat() {if(IE) { diffY = document.body.scrollTop; diffX = document.body.scrollLeft; }if(NS) { diffY = self.pageYOffset; diffX = self.pageXOffset; }if(diffY != lastScrollY) {percent = .1 * (diffY - lastScrollY);if(percent > 0) percent = Math.ceil(percent);else percent = Math.floor(percent);if(IE) document.all.floater.style.pixelTop += percent;if(NS) document.floater.top += percent; lastScrollY = lastScrollY + percent;}
if(diffX != lastScrollX) {percent = .1 * (diffX - lastScrollX);if(percent > 0) percent = Math.ceil(percent);else percent = Math.floor(percent);if(IE) document.all.floater.style.pixelLeft += percent;if(NS) document.floater.left += percent;lastScrollX = lastScrollX + percent;}}<!-- /STALKER CODE --><!-- DRAG DROP CODE -->function checkFocus(x,y) { stalkerx = document.floater.pageX;stalkery = document.floater.pageY;stalkerwidth = document.floater.clip.width;stalkerheight = document.floater.clip.height;if( (x > stalkerx && x < (stalkerx+stalkerwidth)) && (y > stalkery && y < (stalkery+stalkerheight))) return true;else return false;}
function moveIt(e) {if (whichIt == null) { return false; }if(IE) {newX = (event.clientX + document.body.scrollLeft);newY = (event.clientY + document.body.scrollTop);distanceX = (newX - currentX); distanceY = (newY - currentY);currentX = newX; currentY = newY;whichIt.style.pixelLeft += distanceX;whichIt.style.pixelTop += distanceY;if(whichIt.style.pixelTop < document.body.scrollTop) whichIt.style.pixelTop = document.body.scrollTop;if(whichIt.style.pixelLeft < document.body.scrollLeft) whichIt.style.pixelLeft = document.body.scrollLeft;if(whichIt.style.pixelLeft < document.body.offsetWidth - document.body.scrollLeft - whichIt.style.pixelWidth - 20) whichIt.style.pixelLeft = document.body.offsetWidth - whichIt.style.pixelWidth - 20;if(whichIt.style.pixelTop < document.body.offsetHeight + document.body.scrollTop - whichIt.style.pixelHeight - 5) whichIt.style.pixelTop = document.body.offsetHeight + document.body.scrollTop - whichIt.style.pixelHeight - 5;event.returnValue = false;} else { whichIt.moveTo(e.pageX-StalkerTouchedX,e.pageY-StalkerTouchedY);if(whichIt.left < 0+self.pageXOffset) whichIt.left = 0+self.pageXOffset;if(whichIt.top < 0+self.pageYOffset) whichIt.top = 0+self.pageYOffset;if( (whichIt.left + whichIt.clip.width)>= (window.innerWidth+self.pageXOffset-17)) whichIt.left = ((window.innerWidth+self.pageXOffset)-whichIt.clip.width)-17;if( (whichIt.top + whichIt.clip.height) >= (window.innerHeight+self.pageYOffset-17)) whichIt.top = ((window.innerHeight+self.pageYOffset)-whichIt.clip.height)-17;return false;}return false;}function dropIt() {whichIt = null;if(NS) window.releaseEvents (Event.MOUSEMOVE);return true;}<!-- DRAG DROP CODE -->if(NS) {window.captureEvents(Event.MOUSEUP|Event.MOUSEDOWN);window.onmousedown = grabIt;window.onmousemove = moveIt;window.onmouseup = dropIt;}if(IE) {document.onmousedown = grabIt;document.onmousemove = moveIt;document.onmouseup = dropIt;}if(NS || IE) action = window.setInterval("heartBeat()",1);
解决方案 »
- javascript如何对class进行操作呢
- Ext grid如何在查处行最后加个统计行呢?
- 单击浏览器的刷新按钮为什么不触发window.location.reload呢?
- ---------------------------这5行代码哪里错了??? 显示b为定义??-------------------------------
- 一个关于JS给textarea赋值的问题!请指教
- 还没看到过js这种写法,谁能帮我解析一下,谢谢
- 如何得到 iframe 中数组的内容?
- window.open打开后,在子窗口如何得到父窗口是否存在"aaa"对象?
- 一个简单的javascript程序问题 向大家讨教了
- use js 如何勇超连接的方式做出ie的后退效果??
- 用JS改变图片大小的问题
- 如何改变用鼠标选中的文字?
那有最基本的特效,你不仿去看看
function beginDrag(elementToDrag,event) { //计算元素原左上角与鼠标的距离
//moveHandler要这值 var delatX=event.clientX-parseInt(elementToDrag.style.left);
var delatY=event.clientY-parseInt(elementToDrag.style.top); //注册响应mousemove和mousedown事件后的mouseup事件的处理程序 if(document.addEventListener) { //2级DOM事件模型
//注册捕捉事件处理程序。
document.addEventListener("mousemove",moveHandler,true);
document.addEventListener("mouseup",upHandler,true);
}
else if(document.attachEvent) { //IE5+ 的事件模型
//在IE事件模型中,我们不能捕捉事件,所以只有当事件起泡到这些处理程序时,
//它们才被触发. 假设不存在干涉元素, 处理了事件后它们就停止传播
document.attachEvent("onmousemove",moveHandler);
document.attachEvent("onmouseup",upHandler);
}
else { //IE4事件模型
//IE4我们不能使用attachEvent方法,所以存储了以前赋予的处理
//程序后,直接赋予新的事件处理程序,这样可以恢复旧的处理程序.
//注意,这样依赖于事件起泡.
var oldmovehandler=document.onmousemove;
var olduphandler=document.onmouseup;
document.onmousemove=moveHandler;
document.onmouseup=upHandler;
} //我们处理了该事件,不要再让其他元素看见.
if(event.stopPropagation) event.stopPropagation(); //2 级DOM
else event.cancelBubble=true; //IE
//下面禁止执行默认动作
if(event.preventDefault) event.preventDefault(); //2级DOM
else event.returnValue=false; //IE /* 这是元素被拖动时捕捉mousemove事件的处理程序.
* 它负责移动元素
*/
function moveHandler(e) {
if(!e) e=window.event; //IE事件模型;
//把元素移动到鼠标当前的位置,根据初始鼠标点击的偏移量进行调整
elementToDrag.style.left=(e.clientX-delatX)+"px";
elementToDrag.style.top=(e.clientY-delatY)+"px";
//不要再让其他元素看到该事件.
if(e.stopPropagation) e.stopPropagation(); //2级DOM
else e.cancelBubble=true; //IE
} /* 这是捕捉拖移结束最后发生的mouseup事件的处理程序.
*/
function upHandler(e) {
if(!e) e=window.event; //IE事件模型.
//注销捕捉事件程序.
if(document.removeEventListener) { //DOM事件模型
document.removeEventListener("mouseup",upHandler,true);
document.removeEventListener("mousemove",moveHandler,true);
}
else if(document.detachEvent) { //IE5+ 事件模型
document.detachEvent("onmouseup",upHandler);
document.detachEvent("onmousemove",moveHandler);
}
else { //IE事件模型
document.onmouseup=olduphandler;
document.onousemove=oldmovehandler;
}
//不要再让事件进一步传播.
if(e.stopPropagation) e.stopPropagation(); //2级DOM
else e.cancelBubble=true; //IE
} }</script>
<div style="position:absolute; left:100px;top:100px;
backgroud-color:white;border:solid back;"
onmousedown="beginDrag(this,event);">
Drag Me
</div>
//写成了函数了.
//你只要在你要移动的层加入.
//这代码onmousedown="beginDrag(this,event);"
//并把上面的script做成.js就可以方便调用了.
DIV.style.pixeltop=event.y-10;就可以实现普通效果了。