我有一个服务器,当
POST
发送到 /generate
时,它会在 HTML 页面中生成“内容”。页面本身使用 JavaScript window.history.replaceState(null, null, window.location.href)
,以便用户可以重新加载页面(使用 GET
)并查看相同的数据,而无需浏览器询问是否应该重新发送 POST
信息。
该页面还有一个“重新生成”按钮,可将
POST
发送回 /generate
以重新生成新信息。不幸的是,这会在导航历史记录中产生一个新点,以便用户可以点击浏览器的“后退”按钮返回到 /generate
页面的先前版本。我不想要这种行为。我希望页面能够用新生成的内容“替换”当前页面,而无需在导航历史记录中创建新点。
(我很清楚,更现代的方法是使用 Ajax 异步查询服务器并动态更新页面。我想这就是即将发布的版本中将要做的事情。我要求为当前的情况提供快速解决方法该产品的发布。)
有没有办法让页面发送
POST
,这样就不会在导航历史记录中产生新点?页面上的JavaScript可以检测是否发生了重新生成,但我不知道如何remove当前的导航状态,只能替换它。理想情况下,我希望 POST
根本不在导航历史记录中创建新点。
我不认为这是可能的,但我想我应该由社区运行它,看看是否有人知道窍门。谢谢。
您可以使用 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
// ...
}
});