Javascript代码中此处return false的作用

来源:百度知道 编辑:UC知道 时间:2024/05/06 02:50:28
就是在moveImage()函数中的return flase;我去掉之后就无法实现拖动连续的效果。。我也知道这个语句是阻止事件向下传播的作用。。
但是具体不清楚为什么去掉之后这个会产生停顿的效果。。望高人指教!谢谢!
代码出处:http://www.w3school.com.cn/tiy/t.asp?f=dhtm_move

<html>
<head>
<style>
img
{
position:relative;
}
</style>
<script type="text/javascript">
mouseover=true
function coordinates()
{
if (!moveMe)
{
return
}
if (event.srcElement.id=="moveMe")
{
mouseover=true
pleft=document.getElementById('moveMe').style.pixelLeft
ptop=document.getElementById('moveMe').style.pixelTop
xcoor=event.clientX
ycoor=event.clientY
document.onmousemove=moveImage
}
}

function moveImage()
{
if (mouseover&&event.button==1)
{
document.getElementById('m

的确,return false的含义不是阻止事件继续向顶层元素传播,而是阻止浏览器对事件的默认处理。你可以这样试验:首先将所有的js脚本注释掉,在IE浏览器中尝试拖动一下图片,你会发现鼠标会成为禁止操作的样式,图片是被禁止拖动的,它是浏览器针对mousemove事件所提供的默认行为。return false就是为了去掉这种行为,否则就会出现你描述的中断事件连续执行。

另外,和return false等效的语句为:window.event.returnValue = false,你可以把return false替换为此语句并进行验证。

最后说明一下,此种方式只适用于IE浏览器。

一般情况下

true 执行
false 不执行

return 不是“防止向下传播”,而是“返回结果并退出函数”。
虽然说的效果一样,但是两个概念,不要搞错。

你那个网页里的代码写的挺诡异的,要拖动的是图片,但事件侦听却加在了document上,所以每次执行完事件函数,焦点就会返回到document上,而return返回 false 就表示忽略返回结果,document不会因为得到焦点而冲突到 mousemove