history.back不生效怎么办 如何正确使用history.back返回刷新页面
为什么history.back没用 怎么解决history.back失效问题
说实话,很多同学反馈history.back()突然不起作用,真的让人很抓狂!其实呢,这大多跟浏览器有关,不同浏览器的内部机制差别可大了。比如你用的是苹果浏览器Safari,可能会出现和Chrome不一样的效果。小建议给你:把你的JS代码放到<head>里去试试,有时候位置不对也会导致代码不生效。重点是,只调用history.back(1)其实就是让浏览器往回走一步,但它本身不输出什么值,也别指望它会传回什么信息,得明白这一点,才能对症下药。别忘了,有些浏览器对这个API的兼容性不太一样,有时候表现就差那么一丢丢。

如何正确输出history.back(1)和实现返回后刷新页面
关于怎么“输出”history.back(1)的值,咱们得先弄明白,history.back(1)其实根本没有返回值!它只能告诉浏览器返回到上一个页面,然后加载那个页面的内容。所以,想通过它拿结果,嘿,这不现实。不过,别灰心,我给你整理了几点,保证你能搞定:
- 直接用
history.back()实现页面返回就够了,别用history.back(1),效果是一模一样的。 - 如果你想返回后刷新页面,单用
history.back()没啥用,你得用点小技巧,比如用window.location.replace(document.referrer),这玩意会用上一页的URL取代当前页面,刷新一波,完美赶走缓存的坑。 - 代码放好位置很重要,尝试把它放到
<head>或者<body>的合适位置,避免执行时机不对。 - 小心别直接在客户端用PHP变量,比如
alert($_info),千万别这样写,PHP的变量是服务器端的,浏览器啥也看不到,结果就是报错,噢对,客户端就是不认这些变量!
总之,想搞定后退刷新,document.referrer和window.location.replace()的组合就是你的好帮手,别忘记啦!

相关问题解答
-
history.back()为什么没有返回值呢?
嘿,这很正常的!history.back()主要就是告诉浏览器“嘿,返回上一页吧”,它本身不负责给你任何数据返回。浏览器跳转后内容自然刷新,没什么啥数据要返回给调用者,理解这点你就安心啦。 -
我用history.back()页不会刷新怎么办?
哦,这个问题很常见!history.back()只是让浏览器后退,并不一定自动刷新页面。要想刷新,试试window.location.replace(document.referrer),它能用上一页网址替换当前页面,一刷新缓存说拜拜,试试准没错! -
为什么在JS里用PHP变量会报错?
这是因为PHP在服务器端运行,JS在客户端呀!服务器帮你生成页面时PHP变量有值,但当浏览器收到页面代码时,PHP变量早没了,只剩JS代码了。所以直接写alert($_info),JS不认识这个变量,当然就炸了! -
不同浏览器对history.back()支持差别大吗?
嗯,细微的差别还是有的。大多数现代浏览器都支持history.back(),但在一些老版本或者特殊浏览器,比如Safari,行为可能稍微不同,特别是刷新机制上。不过别担心,结合document.referrer技巧,基本可以完美兼容啦!
添加评论