防止在“POST”上生成浏览器历史记录到自己

问题描述 投票:0回答:1

我有一个服务器,当

POST
发送到
/generate
时,它会在 HTML 页面中生成“内容”。页面本身使用 JavaScript
window.history.replaceState(null, null, window.location.href)
,以便用户可以重新加载页面(使用
GET
)并查看相同的数据,而无需浏览器询问是否应该重新发送
POST
信息。

该页面还有一个“重新生成”按钮,可将

POST
发送回
/generate
以重新生成新信息。不幸的是,这会在导航历史记录中产生一个新点,以便用户可以点击浏览器的“后退”按钮返回到
/generate
页面的先前版本。我不想要这种行为。我希望页面能够用新生成的内容“替换”当前页面,而无需在导航历史记录中创建新点。

(我很清楚,更现代的方法是使用 Ajax 异步查询服务器并动态更新页面。我想这就是即将发布的版本中将要做的事情。我要求为当前的情况提供快速解决方法该产品的发布。)

有没有办法让页面发送

POST
,这样就不会在导航历史记录中产生新点?页面上的JavaScript可以检测是否发生了重新生成,但我不知道如何remove当前的导航状态,只能替换它。理想情况下,我希望
POST
根本不在导航历史记录中创建新点。

我不认为这是可能的,但我想我应该由社区运行它,看看是否有人知道窍门。谢谢。

javascript html post browser-history
1个回答
0
投票

您可以使用 sessionStorage 对象来管理它,该对象可以仅为会话存储数据。这意味着当浏览器关闭时,sessionStorage中存储的数据将被删除。 更多信息在这里:https://www.javascripttutorial.net/web-apis/javascript-sessionstorage/


function generateContent() {
  // Send a POST request and update the page content
  // ...
  // Store the content in sessionStorage
  sessionStorage.setItem('generatedContent', 'newContent');
}

// Check sessionStorage on page load
window.addEventListener('load', function () {
  const generatedContent = sessionStorage.getItem('generatedContent');
  if (generatedContent) {
    // Display the previously generated content
    // ...
  }
});

© www.soinside.com 2019 - 2024. All rights reserved.