网站首页 > 技术文章 正文
History API
HTML5 History API无疑是现代网站的发展方向,因为它完成了手头的任务,同时还提供了额外的功能。您可以根据需求使用history.pushState()或history.replaceState()在浏览器中修改URL:
// 当前 URL: https://my-website.com/page_a
// 修改后的URL
const nextURL = 'https://my-website.com/page_b';
const nextTitle = 'My new page title';
const nextState = { additionalInformation: 'Updated the URL with JS' };
// 这将在浏览器的历史记录中创建一个新条目,而无需重新加载
window.history.pushState(nextState, nextTitle, nextURL);
// 这将替换浏览器历史记录中的当前条目,而无需重新加载
window.history.replaceState(nextState, nextTitle, nextURL);
两个方法的参数相同,允许您传递自定义的可序列化状态对象作为第一个参数、自定义标题(尽管大多数浏览器会忽略此参数)以及要在浏览器历史记录中添加/替换的URL。请记住,History API只允许相同的源URL,因此您无法导航到完全不同的网站。
Location API
旧的Location API不是该作业的最佳方案,因为它会重新加载页面,但是它仍然允许您修改当前URL,并且在使用旧浏览器时可能会很有用。您可以使用window.location.href、location.assign()或location.replace()修改URL:
// 当前 URL: https://my-website.com/page_a
// 修改后的URL
const nextURL = 'https://my-website.com/page_b';
// 这将在浏览器的历史记录中创建一个新条目,然后重新加载
window.location.href = nextURL;
// 这将替换浏览器历史记录中的当前条目,然后重新加载
window.location.assign(nextURL);
// 这将替换浏览器历史记录中的当前条目,然后重新加载
window.location.replace(nextURL);
如上所述,这三个选项都将导致页面重新加载,这可能是不希望的。此外,与使用History API不同,您只能设置URL,而不需要任何附加参数。最后,Location API不会限制您使用相同的源URL,但使用不同的源URL,这可能会导致安全问题。
- 上一篇: 优维低代码:构件事件传递
- 下一篇: 面试被问及 hash 与 history 的区别该怎么回答?
猜你喜欢
- 2024-11-25 浅谈SPA单页面应用原理
- 2024-11-25 一起学Vue:路由(vue-router)
- 2024-11-25 vue:vue-router相关
- 2024-11-25 「Burpsuite练兵场」CSRF(二)
- 2024-11-25 一文让你彻底搞懂 vue-Router
- 2024-11-25 Html5监听返回事件
- 2024-11-25 具名插槽使用出现空白
- 2024-11-25 手把手教你快速升级将React Router v5 路由器更新到v6
- 2024-11-25 深度:从零编写一个微前端框架
- 2024-11-25 路由的两种模式:hash模式和 history模式
- 标签列表
-
- content-disposition (47)
- nth-child (56)
- math.pow (44)
- 原型和原型链 (63)
- canvas mdn (36)
- css @media (49)
- promise mdn (39)
- readasdataurl (52)
- if-modified-since (49)
- css ::after (50)
- border-image-slice (40)
- flex mdn (37)
- .join (41)
- function.apply (60)
- input type number (64)
- weakmap (62)
- js arguments (45)
- js delete方法 (61)
- blob type (44)
- math.max.apply (51)
- js (44)
- firefox 3 (47)
- cssbox-sizing (52)
- js删除 (49)
- js for continue (56)
- 最新留言
-