将浏览器历史记录和导航添加到 JavaScript DOM 页面更改功能
Adding Browser History and Navigation To JavaScript DOM Page Change Function
我正在使用 JavaScript 来更改我网站的页面,但是我 运行 遇到了一个问题,我无法使用浏览器导航在历史记录中后退或前进已更改页面。
我已经尝试在每个页面的 URL 中添加 /#pagename
以及一些其他内容,但我似乎无法找到有效的方法。我需要能够确保浏览器保存我所做的页面更改的历史记录,以便它可以使用前进和后退按钮导航这些页面。
// Change Page Function
function ChangeContent (page) {
var pages={"homepage":{title: "homepage"},"servicespage":{title: "servicespage"}};
//Show home page
for(var homepage in pages) {
if(page!==homepage) {
document.getElementById(homepage).style.display='none';
}
else {
document.getElementById(homepage).style.display='block';
window.scrollTo(0,0);
}
}
//Show services page
for(var servicespage in pages) {
if(page!==servicespage) {
document.getElementById(servicespage).style.display='none';
}
else {
document.getElementById(servicespage).style.display='block';
window.scrollTo(0,0);
}
}
}
您应该查看 window.history.pushState
to add history entries and window.onpopstate
以对浏览 "backward" 您添加的条目的用户做出反应。
当您想要 "change" 页时,请拨打以下电话:
window.history.pushState( stateData, title, url );
其中...
stateData
是一些包含您定义的数据的对象
title
是新状态的字符串名称
url
是浏览器的url应该改成的字符串
例如,如果您想更改为 "servicespage" 并将 url 更改为“/#services”:
window.history.pushState( { title: "Services" }, "servicespage", "/#services" );
请注意,此时您仍然需要操作 DOM。
然后,如果您想对用户回溯历史做出反应:
window.onpopstate = function( event ) {
var data = event.state;
// data references the first argument of 'pushState'
// do whatever showing or hiding of <div>s here
};
我正在使用 JavaScript 来更改我网站的页面,但是我 运行 遇到了一个问题,我无法使用浏览器导航在历史记录中后退或前进已更改页面。
我已经尝试在每个页面的 URL 中添加 /#pagename
以及一些其他内容,但我似乎无法找到有效的方法。我需要能够确保浏览器保存我所做的页面更改的历史记录,以便它可以使用前进和后退按钮导航这些页面。
// Change Page Function
function ChangeContent (page) {
var pages={"homepage":{title: "homepage"},"servicespage":{title: "servicespage"}};
//Show home page
for(var homepage in pages) {
if(page!==homepage) {
document.getElementById(homepage).style.display='none';
}
else {
document.getElementById(homepage).style.display='block';
window.scrollTo(0,0);
}
}
//Show services page
for(var servicespage in pages) {
if(page!==servicespage) {
document.getElementById(servicespage).style.display='none';
}
else {
document.getElementById(servicespage).style.display='block';
window.scrollTo(0,0);
}
}
}
您应该查看 window.history.pushState
to add history entries and window.onpopstate
以对浏览 "backward" 您添加的条目的用户做出反应。
当您想要 "change" 页时,请拨打以下电话:
window.history.pushState( stateData, title, url );
其中...
stateData
是一些包含您定义的数据的对象title
是新状态的字符串名称url
是浏览器的url应该改成的字符串
例如,如果您想更改为 "servicespage" 并将 url 更改为“/#services”:
window.history.pushState( { title: "Services" }, "servicespage", "/#services" );
请注意,此时您仍然需要操作 DOM。
然后,如果您想对用户回溯历史做出反应:
window.onpopstate = function( event ) {
var data = event.state;
// data references the first argument of 'pushState'
// do whatever showing or hiding of <div>s here
};