有没有一种方法可以在不重新加载页面的情况下修改当前页面的URL?
如果可能,我想访问#哈希之前的部分。
我只需要更改域之后的部分,所以我不会违反跨域策略。
window.location.href = "www.mysite.com/page2.php"; // this reloads
有没有一种方法可以在不重新加载页面的情况下修改当前页面的URL?
如果可能,我想访问#哈希之前的部分。
我只需要更改域之后的部分,所以我不会违反跨域策略。
window.location.href = "www.mysite.com/page2.php"; // this reloads
当前回答
如果您想更改url但不想将条目添加到浏览器历史记录中,也可以使用HTML5 replaceState:
if (window.history.replaceState) {
//prevents browser from storing history with each change:
window.history.replaceState(statedata, title, url);
}
这将“破坏”后退按钮功能。在某些情况下,这可能是必需的,例如图像库(您希望后退按钮返回到库索引页,而不是返回到您查看的每个图像),同时为每个图像提供自己的唯一url。
其他回答
这就是无需重新加载即可导航的全部内容
//添加设置而不重新加载location.hash=“设置”;//如果url随哈希更改,请执行某些操作window.addEventListener('hashchange',()=>{console.log('rl哈希已更改!');});//如果url更改,请执行某些操作(不要使用哈希检测更改)//window.addEventListener('locationchange',function(){//console.log('rl已更改!');//})//删除#设置而不重新加载history.back();
如果您想更改url但不想将条目添加到浏览器历史记录中,也可以使用HTML5 replaceState:
if (window.history.replaceState) {
//prevents browser from storing history with each change:
window.history.replaceState(statedata, title, url);
}
这将“破坏”后退按钮功能。在某些情况下,这可能是必需的,例如图像库(您希望后退按钮返回到库索引页,而不是返回到您查看的每个图像),同时为每个图像提供自己的唯一url。
这是我的解决方案(newUrl是您要用当前URL替换的新URL):
history.pushState({}, null, newUrl);
位置的任何更改(window.location或document.location)都将导致对新URL的请求,如果您不仅仅是更改URL片段。如果更改URL,则更改URL。
如果您不喜欢当前使用的URL,请使用服务器端URL重写技术,如Apache的mod_rewrite。
您可以在应用程序的任何位置使用这个美丽而简单的功能。
function changeurl(url, title) {
var new_url = '/' + url;
window.history.pushState('data', title, new_url);
}
您不仅可以编辑URL,还可以同时更新标题。