hash模式和history模式 原理和区别
hash | history | |
---|---|---|
hash值变化浏览器不会重新发起请求,但是会触发window.hashChange事件 | history模式基于window.history对象的方法 | |
history.forward();/back()/go(n)/pushState()/replaceState()/state/onpopstate() | ||
hash设置的新值必须与原来不一样才会触发记录添加到栈中 | pushState设置的新URL可以与当前URL一模一样,这样也会把记录添加到栈中 | |
hash只可添加短字符串 | pushState通过stateObject可以添加任意类型的数据到记录中 | |
兼容 | IE8以上 | IE10以上 |
hash只可修改#后面的部分,故只可设置与当前同文档的URL | pushState设置的新URL可以是与当前URL同源的任意URL |