JS中的BOM

61 阅读2分钟

navigation 浏览器相关信息

  • navigation.userAgent 用户代理,包含当前目前浏览器的一些信息,即用户用什么设备打开该页面

history API 记录页面历史信息

  • history.back() 页面后退一次
  • history.forward() 页面前进一次
  • history.go(n/-n) 页面前进/后退n次,如果n超出了历史范围,则n为-1
  • history.pushState (state, title, url) 向当前浏览器会话的历史堆栈中添加一个状态(state),title可忽略

history.pushState({page:1}, '', '/233')

如果当前页面url是 'xxx域名/文件名', 则调用上面命令后,url变为 'xxx域名/233';同时往页面添加了{page:1的}状态,该页面的 history.state 为 {page:1},

  • history.replaceState(state, title, url) 更改当前浏览器会话的历史记录项,与pushState类似,区别在于pushState是新增,replaceState是更改

history.replaceState({page:1}, '', '/233')

如果当前页面url是 'xxx域名/文件名', 则调用上面命令后,url变为 'xxx域名/233';同时把页面的state更改为{page:1的},该页面的 history.state 为 {page:1},但该页面往前返回并不会返回至原先页面,因为是更改而不是新增

loaclStorage 本地存储

  • 用于将大量数据(最大5M)保存在浏览器中
  • 保存后数据永不过期,除非用 js手动清除
  • 不参与网络传输

用法:loaclStorage.setItem(key, value) 将一对键值对存储至浏览器

loaclStorage.getItem(key) 读取对应的value值

localStorage.removeItem(key) 清除对应的值

  • localStorage中的value值必须是string类型,如果不是,则会被强制转换为string
  • 所有key value会被存进一个数组里,在本地存储

  • 如何把对象存储进localstorage?
  1. 用JSON.stringify()方法把对象转换为字符串,存进localStorage
let obj = {a:1, b:true}
JSON.stringify(obj)
localStorage('a', JSON.stringify(obj))
let obj1 = localStorage.getItem('a')
JSON.parse(obj1)
  1. 取出,用JSON.parse()方法把它重新转换为对象

cookie

  • 存储在浏览器上的一小段数据,用于记录某些当页面关闭或刷新后仍需记录的信息
  • 可以用 js 在浏览器直接设置(用于记录不敏感信息,如用户名),也可也在服务端通过使用HTTP协议规定的set-cookie来让浏览器种下cookie,这是最常见的做法
  • 每次网络请求 Request headers 中都会带上cookie,所以如果cookie太多会对传输效率有影响
  • 最大容量为4k,有过期时间,过期自动清除

服务器设置的cookie参数:

服务器在发过来的参数中设置cookie,浏览器存储,在下次浏览器发送请求的时候把存储的cookie信息也带上,服务器接收到之后就可以根据cookie信息确认身份

session 鉴权机制

session stroage

  • 与 localStorage 相似,不同之处在于 localStorage 里面存储的数据没有过期时间设置,而存储在 sessionStorage 里面的数据在页面会话结束时会被清除