当用户单击后退按钮时,如何防止浏览器执行某些JavaScript?

当用户单击后退按钮时,如何防止浏览器执行某些JavaScript?,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,服务器返回一个页面,该页面有一个隐藏的输入,其中包含一些用于将来AJAX请求的一次性CSRF令牌。.onload处理程序解析这些令牌并删除。当用户导航到外部网站,然后使用“后退”按钮返回上一页时,就会出现问题。浏览器使用页面的缓存版本,其中包含带有令牌的,令牌可能已经用完。在提出请求之前,我无法核实 是否有可靠的方法将一些数据传递到JavaScript变量中,即使用户单击“后退”按钮进入页面,JavaScript变量也只能执行一次 我能想到的唯一解决方案是,在页面加载时异步请求这些令牌,但在向用

服务器返回一个页面,该页面有一个隐藏的输入,其中包含一些用于将来AJAX请求的一次性CSRF令牌。
.onload
处理程序解析这些令牌并删除
。当用户导航到外部网站,然后使用“后退”按钮返回上一页时,就会出现问题。浏览器使用页面的缓存版本,其中包含带有令牌的
,令牌可能已经用完。在提出请求之前,我无法核实

是否有可靠的方法将一些数据传递到JavaScript变量中,即使用户单击“后退”按钮进入页面,JavaScript变量也只能执行一次


我能想到的唯一解决方案是,在页面加载时异步请求这些令牌,但在向用户发送大量压缩内容时,为了几个短字符串往返服务器几乎没有意义。

您可以使用localStorage并在其中放置一个标志,但与旧浏览器可能存在兼容性问题

本地存储:


但你最好还是像你所说的那样询问服务器,发送短字符串没有错,流行网站总是这样做。

你可以尝试使用隐藏的
表单,因为浏览器保存表单数据,然后使用js嗅探表单,检查页面是否“脏”


在这个答案中有一个很好的例子:

可以尝试这样的@NickBartlett,它工作得非常好。当你加上它时,我会接受这个答案。