很多次我在 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 的某些规范中?
事件处理程序的返回值决定了默认浏览器行为是否也应该发生。在点击链接的情况下,这将跟随链接,但在表单提交处理程序中差异最为明显,如果用户输入信息有误,您可以取消表单提交。
我不相信有 W3C 规范。像这样的所有古老的 JavaScript 接口都被赋予了“DOM 0”的绰号,而且大多是未指定的。您可能有幸阅读旧的 Netscape 2 文档。
实现这种效果的现代方法是调用event.preventDefault()
,这在DOM 2 事件规范中指定。
您可以通过以下示例看到不同之处:
<a href="http://www.google.co.uk/" onclick="return (confirm('Follow this link?'))">Google</a>
单击“确定”返回 true,然后跟随链接。单击“取消”返回 false 并且不遵循链接。如果 javascript 被禁用,则链接正常。
这是一个更强大的例程,用于取消所有浏览器中的默认行为和事件冒泡:
// 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);
}
当你调用它时,return false 实际上是在做三件非常独立的事情:
有关更多信息,请参阅jquery-events-stop-misusing-return-false。
例如 :
单击此链接时,返回 false 将取消浏览器的默认行为。
<a href='#' onclick='someFunc(3.1415926); return false;'>Click here !</a>
从 JavaScript 事件重新调整 false 通常会取消“默认”行为 - 在链接的情况下,它告诉浏览器不要跟随链接。