我在HTML页面中见过很多这样的链接:

<a href='#' onclick='someFunc(3.1415926); return false;'>Click here !</a>

这里return false的效果是什么?

而且,我通常不会在按钮中看到这种情况。

这在任何地方都指定了吗?在w3.org的一些规范中?


当前回答

我的html页面上有这个链接:

<a href = "" 
onclick = "setBodyHtml ('new content'); return false; "
> click here </a>

函数setBodyHtml()被定义为:

function setBodyHtml (s)
{ document.body.innerHTML = s;
}

当我点击链接,链接消失,文本显示在浏览器中 更改“新内容”。

但是如果我从我的链接中删除“false”,点击链接(似乎)什么都没有。为什么呢?

这是因为如果我不返回false,点击链接并显示其目标页面的默认行为就会发生,不会取消。但是,这里超链接的href是“”,所以它链接回相同的当前页面。因此,页面实际上只是被刷新,似乎什么也没有发生。

在后台,函数setBodyHtml()仍然被执行。它将参数赋值给body.innerHTML。但是由于页面会立即刷新/重新加载,修改后的主体内容可能不会在几毫秒内保持可见,所以我不会看到它。

这个例子说明了为什么有时使用“return false”是有用的。

我确实想给这个链接赋值somehref,这样它就会显示为一个链接,作为带下划线的文本。但我不希望点击链接只是有效地重新加载页面。我希望默认的navigation=行为被取消,并且调用我的函数所引起的任何副作用都保持有效。因此,我必须“返回false”。

上面的例子是您在开发过程中可以快速尝试的。对于生产,您更可能在JavaScript中分配一个点击处理程序,并调用preventDefault()。但是对于一个快速的尝试,上面的“return false”就可以了。

其他回答

返回false将在javascript运行后停止跟踪超链接。这对于优雅地降级的不引人注目的javascript非常有用——例如,你可以有一个缩略图,使用javascript打开一个全尺寸图像的弹出窗口。当javascript被关闭或图像被中间点击(在一个新的选项卡中打开)时,它会忽略onClick事件,只是正常地以完整尺寸的图像打开图像。

如果没有指定return false,图像将正常启动弹出窗口并打开图像。有些人不使用return false,而是使用javascript作为href属性,但这意味着当javascript被禁用时,链接将什么都不做。

当使用表单时,我们可以使用'return false'来阻止提交。

function checkForm() {
    // return true to submit, return false to prevent submitting
}
<form onsubmit="return checkForm()">
    ...
</form>

我相信它会导致标准事件不发生。

在你的例子中,浏览器不会尝试转到#。

返回false表示不采取默认操作,在<a href>的情况下,默认操作是遵循链接。当你对onclick返回false时,href将被忽略。

我的html页面上有这个链接:

<a href = "" 
onclick = "setBodyHtml ('new content'); return false; "
> click here </a>

函数setBodyHtml()被定义为:

function setBodyHtml (s)
{ document.body.innerHTML = s;
}

当我点击链接,链接消失,文本显示在浏览器中 更改“新内容”。

但是如果我从我的链接中删除“false”,点击链接(似乎)什么都没有。为什么呢?

这是因为如果我不返回false,点击链接并显示其目标页面的默认行为就会发生,不会取消。但是,这里超链接的href是“”,所以它链接回相同的当前页面。因此,页面实际上只是被刷新,似乎什么也没有发生。

在后台,函数setBodyHtml()仍然被执行。它将参数赋值给body.innerHTML。但是由于页面会立即刷新/重新加载,修改后的主体内容可能不会在几毫秒内保持可见,所以我不会看到它。

这个例子说明了为什么有时使用“return false”是有用的。

我确实想给这个链接赋值somehref,这样它就会显示为一个链接,作为带下划线的文本。但我不希望点击链接只是有效地重新加载页面。我希望默认的navigation=行为被取消,并且调用我的函数所引起的任何副作用都保持有效。因此,我必须“返回false”。

上面的例子是您在开发过程中可以快速尝试的。对于生产,您更可能在JavaScript中分配一个点击处理程序,并调用preventDefault()。但是对于一个快速的尝试,上面的“return false”就可以了。