实现一个页面操作不会整页刷新的网站,并且能在浏览器前进、后退时正确响应。给出你的技术实现方案

x33g5p2x  于2022-02-18 转载在 其他  
字(0.7k)|赞(0)|评价(0)|浏览(453)

一、前言
如果要实现页面操作不刷新网站,并且可以在浏览器中进行前进和后退操作,此时我们存在两个方法,一个是通过url的hash值操作,另一个是通过HTML5的history方法。下面我们将详细讲解这两个方法。
二、url的hash方法

在url中设置锚点,此时不会发生刷新效果,此时我们可以监听url的hash值的改变,然后进行请求数据,然后渲染页面即可,此时也是可以实现浏览器前进后退不刷新页面的效果的。

如上图所示,此时我们当点击a链接时,此时改变urlhash值,此时我们可以通过监听urlhashchange方法,来执行相应的函数。
优点:hash值方法优势是兼容性好,在老版本的ie中可以运行,但是存在一个缺陷,就是存在#,显得url地址不真实。
三、HTML5的history api
html5中存在一些api,可以实现改变地址url但是不刷新页面。
此时如果我们不使用html5中的api,直接进行a链接切换页面,此时会进行刷新。

如下图所示,此时对上面的标签设置相关的事件,执行相关的函数。

这里的e.preventDefault()表示阻止默认事件。然后通过history api中的pushstate将内容放入其中。
如果想要切换服务器数据,并且达到无刷新,可以在popstate监听函数中和a连接点击时触发ajax向服务器发起请求
三、history 的 6个api总结
replaceState:替换原来的路径。
pushState:使用新的路径。
popState:路径回退。
go:向前或者向后。
back:向后改变路径。
forward:向前改变路径。

相关文章