history对象之pushState,replaceState
浏览器有一个history对象,用来保存浏览历史,用户能够经过点击浏览器的后退或前进按钮在历史记录中切换。以前对history的操做的API主要是前进、后退、跳转等,而在HTML5中提供了2个新方法来管理history。html
history.pushState(state, title, url);
history.replaceState(state, title, url);浏览器
参数说明缓存
简而言之,两个方法的区别只是pushState添加一个最新的历史记录,而replaceState则是把当前的页面的历史记录替换掉。他们最大的特色是添加或替换历史记录后,浏览器地址栏会变成你传的地址,而页面并不会从新载入或跳转。安全
例如,假设当前的页面地址是example.com/1.html,且history中此时只有一条当前页面的记录。函数
利用这些特性,能够用来修改当前页面的URL来达成某些目的,好比能够用来记住搜索条件。url
若是页面是数据展现的页面,页面上有一些搜索或过滤的条件,当用户点击这些条件时,页面经过AJAX把结果呈现到页面上,当点击某个结果页面跳转到下一个页面后,用户点击浏览器的后退按钮回到前一个页面后,即便页面有缓存,AJAX获取的结果也不会保留在页面上。若是后退后,须要记住此前的搜索条件和结果,能够在用户点击搜索条件时,把搜索条件利用history.replaceState添加到页面的query string中。spa
if (history.replaceState) { history.replaceState(condition, null, "?" + $.param(condition, true)); }
页面能够设置成no-cache,当用户后退时,浏览器会从新请求带搜索条件的URL,后台根据搜索条件,把对应的结果页面呈现出来,从而达到记住搜索条件和结果的目的。code