我在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的一些规范中?
当前回答
下面是一个更健壮的例程,可以取消所有浏览器中的默认行为和事件冒泡:
// 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);
}
其他回答
你可以从下面的例子中看出区别:
<a href="http://www.google.co.uk/" onclick="return (confirm('Follow this link?'))">Google</a>
单击“ok”返回true,然后是链接。点击“取消”返回false,并且不遵循链接。如果javascript被禁用,链接是正常的。
我相信它会导致标准事件不发生。
在你的例子中,浏览器不会尝试转到#。
事件处理程序的返回值决定是否也应该发生默认的浏览器行为。在单击链接的情况下,这将跟随链接,但在表单提交处理程序中最明显的区别是,如果用户在输入信息时犯了错误,您可以取消表单提交。
我不相信有一个W3C规范。像这样的所有古老的JavaScript接口都被冠以“DOM 0”的绰号,而且大多数都没有具体说明。您可以有幸阅读旧的Netscape 2文档。
实现这种效果的现代方法是调用event.preventDefault(),这在DOM 2 Events规范中指定。
返回false可以防止页面被导航,也可以防止不必要地将窗口滚动到顶部或底部。
onclick="return false"
下面是一个更健壮的例程,可以取消所有浏览器中的默认行为和事件冒泡:
// 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);
}