网页一直显示跳转中无法打开?

科技 网编 2023-02-24 04:59 387 0

泻药

理论上不能,首先我们需要理解浏览back的机制。

一般来说在访问页面的时候,只要跳转,URL就会发生变化,浏览器会以堆栈的形式记录下你的访问历史。

而在back的时候,浏览器会访问历史堆栈里的上一条记录。

那我们来看看有多少种方式可以跳转。

JS实现的跳转

例如从A打开的B,然后B上有一行window.location.href=C,那么页面就会跳转到C。

对于浏览器来说,这个过程一共3个页面参与。但是对于用户来说,由于B页面存在的时间非常短,所以感觉只有2个页面。在用户点击“back”时,用户的目的是回到A,但是事实上返回到了B。而B页面上又有向C跳转的脚本,这样用户又回到了C。感觉是back无效。

这种状况就会出现题主说的“拼手速”的方法,不停的点击back,在B页面加载完成执行脚本前,再back就可以回到A。

如果禁用浏览器的JS,的确可以不用拼手速但是需要点击两下back就可以从C回到A,但是却无法从A正常跳转到C。

重定向实现的跳转

这个属于跳转,这个跳转是服务器强制的。这种是避免不了的。

Ajax局部刷新

这种方式在现代网站建设中比较常见,这种跳转方式比起整个页面刷新的体验要好很多。可以由于局部刷新,本身并未发生实质性的页面跳转,永远停留在第一个地址,浏览器也不会记录history,自然连back键都不能点。

但是多数这种网站会用hashcode或者window.history.pushstate的方式来重写URL使得浏览器可以纪录一个history,然后再监听url的变化解析url更新页面内容。

如果你遇到的网站没有对URL做操作...放弃吧,你怎么也拯救不了这么烂的网站了。

当然,有的网站缺德的不用window.history.pushstate而是用window.history.replacestate,看着URL在一直变,但是back键就一直是灰的。

评论区