一些知识点
1、# 锚编程
在浏览器解析url的时候会忽略掉#字符后面的数据,但是仍然会将此时的url压入history的栈中。
在编写前端的时候,当一个网友的长度特别长的时候。便会在底部放置返回顶部的锚。通过锚将页面定位到相应的地方。<a>
标签通常会被用来作为一个跳转的标签。
2、history对象
官方api说明
(1) history
history对象是浏览器自带的一个全局对象。用来记录用户的浏览历史的,但是用户不能通过history获得相关的数据。
(2) history对象的属性。
- length 长度,历史记录的长度
- scrollRestoration 允许Web应用程序在历史导航上显式地设置默认滚动恢复行为。此属性可以是自动的(auto)或者手动的(manual)
- state 返回一个表示历史堆栈顶部的状态的值。这是一种可以不必等待popstate 事件而查看状态而的方
(3) history对象的方法 - back() 返回上一页 等价于go(-1)
- forward() 前往下一页 等价于go(1)
- go(n) 相对于当前页面的跳转。n为正往前,n为负往后。0 为当前。空值和非数值型和超出栈长都不会报错。也不会做任何的事件处理
- pushState() 按指定的名称和URL(如果提供该参数)将数据push进会话历史栈,数据被DOM进行不透明处理
- replaceState() 按指定的数据,名称和URL(如果提供该参数),更新历史栈上最新的入口
(3) 事件监听
window.onpopstate用来监听url改变事件的。但是对pushState并不起作用。
3、自主实现一个渲染系统,并且路由可控
1 |
|