动态HTML创作之四(捕捉鼠标事件)

与捕捉键盘相似,我们以使用鼠标来开始任何动画。下面的这个例子将建立一个超级链接,当把鼠标在上面按下时,对象移动,当释放鼠标键时,对象停止移动。

看来这段代码没有什么新的内容。我们仍然需要一个活动变量和让对象移动的函数:

function init() {
if(ns4) block=document.blockDiv
if(ie4) block=blockDiv.style
block.xpos=parseInt(block.left)
block.active=false
}

function slide() {
if(block.active) {
block.xpos+=5
block.left=block.xpos
setTimeout("slide()",30)
}
}
现在要建立与鼠标事件有关的链接:

<a href="javascript:void(null)"
onMouseDown="block.active=true;slide();return false;"
onMouseUp="block.active=false"
onMouseOut="block.active=false">move</a>
“onMouseDown”设定活动变量为“true”,然后调用“slide()”函数来开始动画。当把鼠标键释放时,动画将停止,执行“onMouseUp”指针中的内容。活动变量此时为“false”

“onMouseOut”也把活动变量设为“false”以防出错。因为如果把鼠标移开链接后再释放按钮,动画不会停止,因为鼠标“onMouseUp”事件没有发生在链接上。但是如果在代码中加入了“onMouseOut”语句,这个漏洞就可以弥补。

下面是以上所述整个例子的详细代码:

<HTML>

<HEAD>
<TITLE>Mouse Click Animation</TITLE>
<script language="javascript">
<!--

ns4=(document.layers)?true:false
ie4=(document.all)?true:false

function init() {
if(ns4) block=document.blockDiv
if(ie4) block=blockDiv.style
block.xpos=parseInt(block.left)
block.active=false
}

function slide() {
if(block.active) {
block.xpos+=5
block.left=block.xpos
setTimeout("slide()",30)
}
}

//-->
</script>
</HEAD>

<BODY onLoad="init()">
<p>按下面的链接使对象移动
<br>
<a href="javascript:void(null)"
onMouseDown="block.active=true;slide();return false;"
onMouseUp="block.active=false"
onMouseOut="block.active=false">移动</a>
</p>
<div id="blockDiv" style="position:absolute;left:50;top:100;width:30">
<img src="../image/block.gif">
</div>
</BODY>
</HTML>