【问题标题】:Is it possible to store previous url in back button which will work directly?是否可以将以前的 url 存储在可以直接工作的后退按钮中?
【发布时间】:2022-02-14 03:55:53
【问题描述】:

我正在尝试将以前的 url 数据存储在后退按钮中,以便可以直接共享页面而不会丢失该信息。我尝试使用document referrer and with cookies 使用javascript,但如果直接访问该页面,它就不起作用。 提前致谢。

【问题讨论】:

  • 与其保存这么多东西,不如创建一个随机拥有并在服务器上存储数据/会话信息。根据要求,检查哈希并传递必要的数据并进行相应的处理。这将确保您的网站即使在用户禁用 cookie 时也能正常运行
  • 如果您能分享更多细节,那就太好了。我没有用户登录,大多数随机哈希生成文章都与存储用户登录会话有关。谢谢

标签: javascript html cookies


【解决方案1】:

试试这样的。

当用户访问网页时,运行:

// When the user closes the window, save the url in a localStoage
window.onbeforeunload = () => {
    localStorage.setItem('previousUrl', document.URL);
};

一旦他们再次访问,运行这个函数:

// When the user open the webpage, it will show the data saved last time
function getPreviousUrl() {
    return document.referrer ? document.referrer : localStorage.getItem('previousUrl');
}
// Return the url saved last time
getPreviousUrl();

【讨论】:

  • 如果同一用户访问该页面,这将起作用。如果页面已被共享的其他人试图访问它,它就不起作用。
  • e,,,想一想我给你分享了一个url,你可以访问这个url,甚至知道我访问过的历史网站?这可能合理吗?
  • 如果我分享你的url,你能根据document.referrer得到以前的url吗?如果没有,你可以通过更改哈希(#)来更改 url,如果 url 被某人共享并且以前的 url 添加到当前 url 后面。如果你想在用户之间共享数据,那么数据应该保存在服务器中或网址。这就是我的想法
【解决方案2】:

您可以使用 jquery 将数据存储在 cookie 中。

jQuery(document).ready(function($) {

   if (window.history && window.history.pushState) {
      window.history.pushState('forward', null, './#forward');
      $(window).on('popstate', function() {
         alert('Back button clicked...');
      });
   }
});

【讨论】:

  • 如果同一用户访问该页面,这将起作用。如果页面已被共享的其他人试图访问它,它就不起作用。
【解决方案3】:

window.history.pushState(data, title, targetUrl);

【讨论】:

  • 如果同一用户访问该页面,这将起作用。如果页面已被共享的其他人试图访问它,它就不起作用。
  • 如果是这样的话,我认为这是你应该在服务器端做的事情。您无法在客户端 (Javascript) 上完成此操作,因为每个用户都有自己的会话。您可以将 URL 的历史记录保存在数据库表或应用程序内存中,尽管这可能会导致线程问题。
猜你喜欢
  • 2017-10-30
  • 2020-03-08
  • 1970-01-01
  • 2010-11-21
  • 1970-01-01
  • 2022-11-22
  • 1970-01-01
  • 2011-05-23
  • 2012-06-20
相关资源
最近更新 更多