浏览器后退按钮不能返回到原来的网页
泻药
理论上不能,首先我们需要理解浏览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。
重定向实现的跳转
这个属于Http协议级别东西,例如301跳转,这个跳转是服务器强制的。这种是避免不了的。
Ajax局部刷新
这种方式在现代网站建设中比较常见,这种跳转方式比起整个页面刷新的体验要好很多。可以由于局部刷新,本身并未发生实质性的页面跳转,永远停留在第一个地址,浏览器也不会记录history,自然连back键都不能点。
但是多数这种网站会用hashcode或者window.history.pushstate的方式来重写URL使得浏览器可以纪录一个history,然后再监听url的变化解析url更新页面内容。
如果你遇到的网站没有对URL做操作...放弃吧,你怎么也拯救不了这么烂的网站了。
当然,有的网站缺德的不用window.history.pushstate而是用window.history.replacestate,看着URL在一直变,但是back键就一直是灰的。
可能是因为浏览器缓存问题导致的。当你点击浏览器的后退按钮时,浏览器会尝试从缓存中加载上一个页面,如果缓存中没有该页面的副本,那么浏览器就无法返回到原来的网页。解决方法可以尝试清除浏览器缓存或者使用其他浏览器尝试。
这个问题的回答应该是需要具体情况具体分析的。
1、如果这个问题出现在某个具体网站上,那么很有可能是这个网站自身的缺陷或者程序bug导致的。
需要向网站管理员反馈此问题。
2、如果这个问题出现在多个网站上或者所有的网站上,那么很有可能是浏览器本身的问题,也可能是浏览器插件、广告拦截软件等其他工具导致的。
可以使用其他浏览器尝试解决,或者卸载插件和软件尝试解决。
3、建议在使用浏览器时,不要滥用后退按钮,以免造成页面跳转或者数据提交等问题,导致无法返回原来的网页。
为什么我的米4浏览器返回键按一下就变成刷新了要同时按两下才能返回
泻药
理论上不能,首先我们需要理解浏览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。
重定向实现的跳转
这个属于Http协议级别东西,例如301跳转,这个跳转是服务器强制的。这种是避免不了的。
Ajax局部刷新
这种方式在现代网站建设中比较常见,这种跳转方式比起整个页面刷新的体验要好很多。可以由于局部刷新,本身并未发生实质性的页面跳转,永远停留在第一个地址,浏览器也不会记录history,自然连back键都不能点。
但是多数这种网站会用hashcode或者window.history.pushstate的方式来重写URL使得浏览器可以纪录一个history,然后再监听url的变化解析url更新页面内容。
如果你遇到的网站没有对URL做操作...放弃吧,你怎么也拯救不了这么烂的网站了。
当然,有的网站缺德的不用window.history.pushstate而是用window.history.replacestate,看着URL在一直变,但是back键就一直是灰的。
还没有评论,来说两句吧...