window.location.replace() 方法用于加载新的 URL,并且替换当前页面的历史记录。与 window.location.href 或 window.location.assign() 不同,window.location.replace() 会将当前页面从浏览器历史记录中移除,因此无法通过浏览器的“后退”按钮返回到原页面。
基本语法
window.location.replace(url);
url:要加载的新页面的 URL。可以是绝对 URL 或相对 URL。
特点:
- 替换当前历史记录:调用
replace()后,当前页面会被新页面替换,并且新页面会成为历史记录栈中的当前项,但原页面不会保留在历史记录中。 - 不能通过后退按钮返回:由于替换了历史记录,用户无法通过浏览器的后退按钮返回到被替换的页面。
示例:
// 替换当前页面并加载新页面
window.location.replace("https://www.example.com");
// 使用相对路径来替换当前页面
window.location.replace("/newpage.html");
使用场景:
- 用户登录后重定向:用户登录后不希望用户通过浏览器的“后退”按钮回到登录页面,可以使用
replace()来替换当前页面。 - 页面跳转但不希望留下历史记录:如果不希望用户在跳转后还能返回到当前页面(例如支付完成后跳转到感谢页面),可以使用
replace()。
与 window.location.href 和 window.location.assign() 的对比:
window.location.href = "newUrl":会将新的 URL 添加到历史记录栈中,允许用户通过后退按钮返回到当前页面。window.location.assign("newUrl"):也会将新的 URL 添加到历史记录栈中,效果与href类似。window.location.replace("newUrl"):替换当前页面,不会在历史记录中保留当前页面。
有些场景下你可能会需要这种替换历史记录的功能,像是在单页应用(SPA)中,处理用户认证后的页面跳转。你有这样的需求吗?
发表回复