gpt4 book ai didi

javascript - 如何使用 JavaScript 管理后退按钮

转载 作者:行者123 更新时间:2023-12-03 03:20:48 25 4
gpt4 key购买 nike

我有一个使用 <div> 制作的单页网站标签移动、隐藏等。我需要能够让后退按钮控制运行我的 div 的功能。

我一直在研究如何做到这一点,并发现了 this文章。

我已将此代码包含在我的网站中,每次用户单击附加了 doclick() 函数的按钮时,它非常适合通过递增的主题标签编号来更新 URL。

var times = 0;
function doclick() {
times++;
location.hash = times;
}
window.onhashchange = function() {
if (location.hash.length > 0) {
times = parseInt(location.hash.replace('#',''),10);
} else {
times = 0;
}
document.getElementById('message').innerHTML =
'Recorded <b>' + times + '</b> clicks';
}

我的网站上有 4 个按钮调用 doclick()

<div onClick="edit(); doclick()">Editorial</div>
<div onClick="vfx(); doclick()">VFX</div>
<div onClick="audio(); doclick()">Audio</div>
<div onClick="color(); doclick()">Color</div>

我的经验不够,不知道如何做我需要的事情。

现在我将每次点击存储在一个新的哈希中,如何使用该数据来调用我已经设置的特定函数?或者也许有更好的调整方法,这样 URL 将反射(reflect)页面名称,而不仅仅是添加 #1、#2 等。就像 www.site.com/vfx - 我可以使用该信息来调用函数。

用法示例:

  • 我们从主页 www.site.com 开始
  • 用户点击 EDITORIAL BTN - div 关闭,在Editorial 上打开,网址为 www.site.com/editorial
  • 用户点击 VFX BTN - div 切换出来,现在位于 VFX 页面上。网址为 www.site.com/vfx
  • 用户点击后退按钮 - 现在调用相同的函数 edit() 并返回 www.site.com/editorial

最佳答案

除了 HTML5 之外,还有一个 History API,当按钮 forward 时,它允许您更改浏览器的状态,并更改 URL 路径名,但不重新加载页面。或backward单击后,页面的行为就像您的页面已重新加载一样,但事实并非如此。

请检查这个示例:

var target = document.querySelector(".content");

//Initiate the state.
history.replaceState({
title: document.title,
content: target.innerHTML,
}, document.title);

//When the buttons forward or backward is clicked, change the state of
//browser, and replace the target's content.
window.onpopstate = function(e) {
if (e.state) {
document.title = e.state.title;
target.innerHTML = e.state.content;
}
};

//Assuming you're using Ajax to load remote data.
$.get("/something", function(data){
history.pushState({
title: data.title,
content: data.content,
}, data.title, data.url);
document.title = data.title;
target.innerHTML = data.content;
});

如果你还是不明白我在说什么,请查看我最近的项目的网站,虽然它使用WebSocket来加载远程数据,但是你可以看到当你点击文档项时,页面不会重新加载,但内容和URL会被修改。

http://cool-node.hyurl.com:3000/Docs

为了方便起见,我已将此 A​​PI 包装到一个插件中,您可以在

处查看

https://github.com/Hyurl/soft-loader

或者,顺便说一句,您实际上不需要重新加载远程数据,这只是一个示例,您可以将内容存储在您想要的任何地方,无论是远程还是本地 <body>

关于javascript - 如何使用 JavaScript 管理后退按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46577296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com