首页 > 解决方案 > 更新历史状态并重定向

问题描述

如何更新历史状态,然后重定向到新页面,以便后退按钮返回到更新的历史。

IE:

上下文:在我的工作站点,我们使用票务系统,为了加快我的工作流程,我创建了一个本地脚本文件并将其设置为 Chrome 中的自定义搜索引擎。它使用正则表达式来检查查询是否与票证 ID 模式匹配,如果匹配则重定向到票证系统,如果不匹配则重定向到 Google。

这样,如果我在地址栏中搜索“TK00123”之类的内容,它会重定向到,http://ticketengine/query?TK00123但如果我搜索“hello world”,它只会将该查询转发给 Google。

我希望能够在重定向后点击后退按钮并获得一种插页式页面,我可以在其中从一些选项中进行选择。

这是我目前拥有的:

<script>
let ticketSearch = 'http://ticketengine/query?'
let googleSearch = 'https://www.google.com/search?q='
if (location.search.match(/\?query=(.+)/)) {
    let searchQuery = RegExp.lastParen
    history.pushState({}, '', location.pathname + '?waitQuery=' + RegExp.lastParen)
    if (searchQuery.match('TK\d+')) {
        location.href = ticketSearch + searchQuery
    } else {
        location.href = googleSearch + searchQuery
    }
} else if (location.search.match(/\?waitQuery=(.+)/)) {
    let searchQuery = RegExp.lastParen
    document.write(`Ticket: <a href="${ticketSearch + searchQuery}">${decodeURIComponent(searchQuery)}</a><br>`)
    document.write(`Google: <a href="${googleSearch + searchQuery}">${decodeURIComponent(searchQuery)}</a><br>`)
}
</script>

从我读过的所有内容来看,这似乎应该可以工作,但是我实际上从未真正获得可以返回的历史条目。重定向将其清除。

标签: javascripthtml

解决方案


推荐阅读