单页面记录用户每一次的搜索记录(history)
单页面记录用户每一次的搜索记录
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>history</title>
</head>
<body>
<input type="text"><button type="button" onclick="search(ipt.value)">搜索</button>
<div class="main"></div>
<script>
// 单页面记录用户每一次的搜索记录
const data = [
{
name: "HTML"
},
{
name: "CSS"
},
{
name: "JS"
},
{
name: "Vue"
},
{
name: "React"
},
{
name: "TS"
}
]
const ipt = document.querySelector("input");
console.log('ipt: ', ipt);
const button = document.querySelector("button");
console.log('button: ', button);
const divContainer = document.querySelector(".main");
console.log('divContainer: ', divContainer);
// mode为cache那就表示用户点击了回退普通搜索(不记录状态),如果正常搜索那就记录该状态(记录状态好随时切换记录)
const search = (iptVal, mode) => {
const result = iptVal !== "" ? data.filter(item => iptVal === item.name) : data;
mode !== 'cache' && history.pushState({ iptVal: iptVal }, null, `#${iptVal}`); // 每次搜索进行记录
render(result, mode, iptVal)
}
const render = (data, mode, iptVal) => {
mode === 'cache' && (ipt.value = iptVal)
const vNode = data.map(item => `<div>${item.name}</div>`).join("");
divContainer.innerHTML = vNode;
}
render(data)
// 监听用户是否点击回退,如果回退则回到上一个历史记录(e.state.xxx 拿到上一个历史记录)(只要url变了就会触发)
window.addEventListener('popstate', (e) => {
search(e.state?.iptVal || "", "cache")
})
// hash值变了才会触发
window.addEventListener('hashchange', (e) => {
console.log(e)
})
</script>
</body>
</html>
本文作者:HuangBingQuan
本文链接:https://www.cnblogs.com/bingquan1/p/17630164.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具