javascript - 更新历史状态并重定向
问题描述
如何更新历史状态,然后重定向到新页面,以便后退按钮返回到更新的历史。
IE:
- 我去 search.html?query=test
- 将历史记录更新为 search.html?waitQuery=test
- 重定向到谷歌搜索“测试”
- 点击返回按钮,转到 search.html?waitQuery=test
上下文:在我的工作站点,我们使用票务系统,为了加快我的工作流程,我创建了一个本地脚本文件并将其设置为 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>
从我读过的所有内容来看,这似乎应该可以工作,但是我实际上从未真正获得可以返回的历史条目。重定向将其清除。
解决方案
推荐阅读
- qemu - QEMU - 支持 mcimx6ul-evk 机器
- amazon-web-services - 如何从本地厨师工作站引导 AWS EC2 实例?
- node.js - 我试图在 express.js 中显示 flash 错误消息,但 req.flash('error') 返回空数组
- python - 在 conda 环境中在 circleci 运行测试
- c++ - 如何将 std::cin 作为函数的参数传递?
- typescript - 打字稿承诺 Rest Api
- c# - 从 C# Web 应用程序预订 Outlook 会议室
- php - vue-json-excel 包含多个 excel 下载的数据问题
- python - Jupyter Kernel ImportError:DLL 加载失败:%1 不是有效的 Win32 应用程序
- powershell - 尝试在 CSV 列表中导入 CSV