我在HTML页面中见过很多这样的链接:
<a href='#' onclick='someFunc(3.1415926); return false;'>Click here !</a>
这里return false的效果是什么?
而且,我通常不会在按钮中看到这种情况。
这在任何地方都指定了吗?在w3.org的一些规范中?
我在HTML页面中见过很多这样的链接:
<a href='#' onclick='someFunc(3.1415926); return false;'>Click here !</a>
这里return false的效果是什么?
而且,我通常不会在按钮中看到这种情况。
这在任何地方都指定了吗?在w3.org的一些规范中?
当前回答
什么“返回错误”是真的做?
当你调用它时,Return false实际上做了三件非常独立的事情:
event.preventDefault (); event.stopPropagation (); 停止回调执行并在调用时立即返回。
更多信息请参见jquery-events-stop- misuse -return-false。
例如:
当单击此链接时,返回false将取消浏览器的默认行为。
<a href='#' onclick='someFunc(3.1415926); return false;'>Click here !</a>
其他回答
浏览器黑客: http://jszen.blogspot.com/2007/03/return-false-to-prevent-jumping.html
我的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将阻止导航。否则,位置将成为someFunc的返回值
什么“返回错误”是真的做?
当你调用它时,Return false实际上做了三件非常独立的事情:
event.preventDefault (); event.stopPropagation (); 停止回调执行并在调用时立即返回。
更多信息请参见jquery-events-stop- misuse -return-false。
例如:
当单击此链接时,返回false将取消浏览器的默认行为。
<a href='#' onclick='someFunc(3.1415926); return false;'>Click here !</a>
下面是一个更健壮的例程,可以取消所有浏览器中的默认行为和事件冒泡:
// Prevents event bubble up or any usage after this is called.
eventCancel = function (e)
{
if (!e)
if (window.event) e = window.event;
else return;
if (e.cancelBubble != null) e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();
if (e.preventDefault) e.preventDefault();
if (window.event) e.returnValue = false;
if (e.cancel != null) e.cancel = true;
}
这将如何在事件处理程序中使用的示例:
// Handles the click event for each tab
Tabstrip.tabstripLinkElement_click = function (evt, context)
{
// Find the tabStrip element (we know it's the parent element of this link)
var tabstripElement = this.parentNode;
Tabstrip.showTabByLink(tabstripElement, this);
return eventCancel(evt);
}