【问题标题】:Does back/forward in the browser change javascript variables?浏览器中的后退/前进是否会更改 javascript 变量?
【发布时间】:2011-01-20 08:51:43
【问题描述】:
<script type="text/javascript>
var x = 0; //this occurs in the beginning of the page.

$("#button").onclick{
x = 1;
}

</script>

假设变量“x”变为 1。然后用户点击一个链接。当用户点击“返回”时,x是0还是1?

【问题讨论】:

  • 你可以测试一下,然后告诉我们..? =)
  • 嘿原始海报,您可能想选择其他答案作为接受:D

标签: javascript jquery browser-history browser-state


【解决方案1】:

正如another question 中所详述,这个问题的真正答案是取决于浏览器

在 Firefox 和 Opera 中,如果单击 Set x、单击链接,然后按下返回按钮,则下面的页面将保留 1 的状态。但是,在 Chrome 和 IE6 中,页面将被重新加载,x 的值将是 0

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<input type="button" id="button" value="Set x">
<input type="button" id="check-x" value="Check x">
<a href="http://www.stackoverflow.com">Click Me</a>
<script>
var x = 0;

$("#button").click(function(){
    x = 1;
});

$("#check-x").click(function(){
   alert(x); 
});
</script>

【讨论】:

  • 我认为chrome现在也保留了变量的状态
【解决方案2】:

它将是0。浏览器不会在页面加载之间缓存 Javascript 变量的状态。

更新

在 Firefox 等浏览器中并非如此。请参阅 Trey 的回答。

【讨论】:

  • 这很奇怪,我一定是做错了什么。我下面的代码错了吗?我没有做太多的javascript,只是想看看为什么我会得到不同的行为。
  • 但有时单击链接然后单击返回不会导致页面加载,因为链接的目标是本地锚点。
  • 你怎么能这么肯定?如果要保存 JavaScript 状态的快照,完全取决于浏览器。有些浏览器实际上在按下时会这样做。例如,我在 Chrome 中看到过。
猜你喜欢
  • 2013-07-31
  • 1970-01-01
  • 1970-01-01
  • 2019-04-29
  • 2011-12-26
  • 2017-03-24
  • 2015-08-12
  • 1970-01-01
  • 2012-04-16
相关资源
最近更新 更多