何时以及为何在 JavaScript 中“返回 false”?

IT技术 javascript jquery
2021-01-16 14:28:49

何时以及为什么return false在 JavaScript 中使用?

6个回答

通常,在诸如 之类的事件处理程序中onsubmit,返回 false 是一种告诉事件实际上不会触发的方法。所以,比如说,在这种onsubmit情况下,这意味着没有提交表单。

有时return false是在方法中,这会改变什么吗?
2021-03-15 14:28:49
在创建事件处理程序时,返回 false 实际上对于防止默认操作是过度的,并且可能导致脆弱的代码。Douglas Neiner 在此处的帖子中的解释和示例Fuelyourcoding.com/jquery-events-stop-misusing-return-false
2021-03-23 14:28:49
如果您想要一个无需重新加载页面即可提交的 AJAX 表单,这尤其有用 - 但也可以在 javascript 不可用时通过提交和重新加载页面来工作。
2021-03-28 14:28:49
使用 jQuery,最好使用event.preventDefault()此功能。我相信返回 false 已被弃用,并且不再总是有效。
2021-04-08 14:28:49
@onetwopunch 事实上,当我将其更改为 e.preventDefault() 时,解决了我的一个基于命名空间触摸事件的函数的问题。不知道为什么,但你给了我这个想法。谢谢。
2021-04-10 14:28:49

我猜你指的是你经常不得不输入一个'return false;'的事实。事件处理程序中的语句,即

<a href="#" onclick="doSomeFunction(); return false;">...

'返回假;' 在这种情况下,会阻止浏览器跳转到当前位置,如 href="#" 所示 - 相反,只执行 doSomeFunction()。当您想向锚点标签添加事件,但又不希望浏览器在每次点击时上下跳转到每个锚点时,这很有用

@vol7ron:当然,这取决于每个开发人员(或网站所有者)来确定他们想要满足多少潜在用户群。但是,在这种情况下,针对更多人的选项如此简单,我不明白您为什么不选择它。另外,请记住,这不仅仅是人们明确禁用 javascript 的问题;它可能是:其他人将这个决定强加给他们,下载 JS 文件的网络问题,JS 一行中的错误导致它全部失败。此外,如果右键单击-> 在新选项卡中打开仍然有效,那就太好了。
2021-03-14 14:28:49
当然,'href="#"' 是不好的做法,但你的总体观点仍然成立:-)
2021-03-30 14:28:49
@vol7ron 要考虑的另一种情况是“javascript 中断”时(由于页面中较高的语法错误)。拥有非 js 回退为您提供了这种情况下的一些安全网。(由于 js 语法错误,Google.com 不久前关闭了近 30 分钟!)
2021-04-01 14:28:49
不低于1%的用户。许多人出于某种原因使用 NoScript 等扩展程序。有目的地关闭诸如 javascript 之类的东西。
2021-04-03 14:28:49
@vol7ron:替代方案是一个真正的 URL,可以作为那些没有 javascript 的人的替代方案。否则,他们只会点击链接而什么也没有发生。
2021-04-07 14:28:49

它用于停止事件传播你会看到当你有两个元素都带有点击事件处理程序时(例如)

-----------------------------------
| element1                        |
|   -------------------------     |
|   |element2               |     |
|   -------------------------     |
|                                 |
-----------------------------------

如果单击内部元素(element2),它将在两个元素中触发单击事件:1 和 2。这称为“事件冒泡”。如果您只想处理 element2 中的事件,则事件处理程序必须返回 false 以停止事件传播。

另一个示例是链接 onclick 处理程序。如果您想停止链接表单的工作。您可以添加一个 onclick 处理程序并返回 false。阻止事件传播到默认处理程序。

这个答案的第一部分是错误的:false从事件处理程序返回将阻止与事件关联的默认操作;你也可以通过调用event.preventDefault()或设置event.returnValue = false(IE)来做到这一点为了阻止事件冒泡,您必须调用event.stopPropagation()或设置event.cancelBubble = true(IE)
2021-03-22 14:28:49

呃......如何在布尔函数中指示“不正确”?

即使在 FileNotFound 中,false 仍然不是真的,不是吗?
2021-03-27 14:28:49
Gleb:没有“in FileNotFound”,它是 TDWTF 的笑话:thedailywtf.com/Articles/What_Is_Truth_0x3f_.aspx
2021-04-04 14:28:49

在搜索“js,何时使用'return false;”后,我也来到了这个页面 在其他搜索结果中,我发现一个页面更有用也更直接,位于 Chris Coyier 的 CSS-Tricks 站点:'return false;'之间的区别。和'e.preventDefault();'

他的文章的要点是:

函数(){ 返回假;}

// 等于

function(e) { e.preventDefault(); e.stopPropagation(); }

虽然我仍然建议阅读整篇文章。

更新:在争论使用 return false 的优点之后;作为 e.preventDefault() 的替代品;& e.stopPropagation(); 我的一位同事指出 return false 也会停止回调执行,如本文所述:jQuery Events: Stop (Mis)Using Return False

经过一些代码测试后,我必须在这里注意到:在jquery 中function() { return false; }等于function(e) { e.preventDefault(); e.stopPropagation(); },但在纯 js 中,它不一样, 实际上function() { return false; }等于function(e) { e.preventDefault(); }不会停止传播。
2021-04-07 14:28:49