【问题标题】:Is there a way to execute code just before page refresh?有没有办法在页面刷新之前执行代码?
【发布时间】:2019-07-24 11:54:06
【问题描述】:

我一直在尝试使用 onbeforeunload 功能来做到这一点,但它只是

没有做我想做的事。

所以,我有一个将文本附加到其 url 的网页来做一些事情:

https://localhost:3000/someTextAppended

但是当我刷新时,可以通过点击浏览器的“刷新按钮”或者按下

“F5”,我不想刷新新的url(带有附加文本),我只想

在这种情况下刷新域部分:

https://localhost:3000

我尝试使用此代码和一些变体:

$(window).bind('beforeunload', function(){
  window.history.pushState("data","Title","");
});

但它会不断刷新附加的 url,然后我得到了。

Cannot GET /someTextAppended

还有其他方法可以实现吗?

提前致谢;)

【问题讨论】:

  • 这听起来像是 X/Y 问题 - 你想达到什么目的
  • 不要使用pushState设置无效的URL;与适当的动态历史有关的一切都应该反映在服务器的 url 界面上。这是一个在正确的时间触发的 onunload 事件,但同样,您应该避免像临时客户端 URL 这样的反模式;他们没有任何意义。

标签: javascript jquery html node.js url


【解决方案1】:

您可以在onbeforeunload 中做的事情很少。将用户发送到其他地方不是其中之一。

所以,我有一个将文本附加到其 url 的网页来做一些事情

URL 应表明用户在您的网站或应用程序中所处的位置。它不应该“做一些事情”。

您可能应该做的是在 LocalStorage 中保持状态,如果 URL 中表示的状态无效,则在页面加载时更新 URL

我会给你具体的建议,但你没有问具体的问题。

【讨论】:

    【解决方案2】:

    这可能不适合您,但您可以使用 location.hash (https://localhost:3000/#someTextAppended)。

    或者,将您的网络服务器设置为在 GET /someTextAppended 请求上提供 /

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多