【问题标题】:Why return false after location.reload() using onclick?为什么使用 onclick 在 location.reload() 之后返回 false?
【发布时间】:2021-07-23 11:11:57
【问题描述】:

我正在制作一个 JavaScript 应用程序,我在其中使用方法 location.reload()。方法location.reload()onclick 事件处理程序中重置页面,这个答案说你需要在location.reload()onclick 之后return false;How to reload a page using JavaScript

location.reload();

更多信息请参见MDN page

如果你在 onclick 之后刷新,那么你需要在之后直接返回 false

location.reload();
return false;

为什么要在方法location.reload() 之后使用onclick return false;

【问题讨论】:

  • 您的问题完全断章取义;为什么不直接添加方法?
  • 我在这里胡乱猜测,但可能是关于<a>元素或表单提交?
  • 这个问题已经很老了(> 10 年)。似乎 reload() 的参数 - 一个 true/false 来指示浏览器是否应该强制刷新 - 已经被弃用了。我现在想,当指示“reload()”时,它只是决定刷新/缓存调用类型的浏览器。显然,该参数仍然可以传递并且不会特别引发错误 - 但据我所知,它绝对没有真正做任何事情。
  • @Craig - 这个问题有点模棱两可,但我相信发帖者指的是this answer that explicitly suggests return false after the reload is necessary。我以为他们在谈论第一眼将false传递给.reload的答案。 @FilipHuhta - 对于它的价值,有一些 cmets 挑战/质疑这个关于在该答案上返回 false 的断言。
  • 如果您只是希望屏幕刷新,并且在“location.reload()”调用之后没有任何期望结果或执行任何其他功能的内容,那么本质上你不应该需要任何额外的东西。但是,如果您确实有嵌套函数调用或后续代码(在需要重新加载的情况下您不想运行),那么返回 false 可能是有意义的(如果您的后续代码需要布尔结果) .我当然不相信有任何东西会固有地影响浏览器的行为,无论是否有“返回”值

标签: javascript html reload


【解决方案1】:

如果事件侦听器附加到链接,则单击该链接将导致转到另一个页面,而不是重新加载该页面。 return false 将阻止内联事件处理程序和 onclick 属性中的默认操作。

没有return false

document.querySelector('a').onclick = function() {
  location.reload();
}
<a href="https://www.example.com">Click</a>

return false:

console.log('Loaded', new Date);
document.querySelector('a').onclick = function() {
  location.reload();
  return false;
}
<a href="https://www.example.com">Click</a>

在现代 JavaScript 中,将使用 addEventListenerevent.preventDefault()

document.querySelector('a').addEventListener('click', function(e){
    e.preventDefault();
    location.reload();
});

【讨论】:

  • 这是一个足够公平的例子,说明何时返回 false 是适用的。
  • 你的意思是event.preventDefault()?现在已经不是 1998 年了,我们已经有很长很长一段时间不用返回 false 了。另外,现在已经不是 1998 年了:不要使用 onclick,使用普通的事件处理程序。
  • @Mike'Pomax'Kamermans 我知道这一点。该示例仅用于解释为什么建议使用 return false
  • 大概是因为“教程很古老”。许多教程仍然在教授完全过时的实践=(但我们可以帮助解决这个问题,告诉人们他们所问的内容在 JS 实践方面是古老的,并帮助他们学习现代的做事方式)
  • 如果href 是通常的#,则可能永远无法到达return false 语句。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-18
  • 2020-10-07
  • 1970-01-01
  • 2019-03-29
  • 2014-11-17
  • 2014-03-11
  • 2019-07-12
相关资源
最近更新 更多