使用后退按钮时IE中的JavaScript问题

使用后退按钮时IE中的JavaScript问题,javascript,Javascript,我有一个表单,用户可以在其中查询两个不同的地区。默认情况下,当页面首次加载时,区域1的表单元素将显示,而区域2的表单元素将隐藏。我有一个选择框,用户可以在其中选择要查询的区域,还有一点JavaScript,根据区域的不同显示和隐藏表单的不同部分 这在Firefox和IE中运行良好,除非用户在IE中按下浏览器后退按钮,这通常发生在用户希望进行稍微不同的查询时。如果用户查询区域2,然后按下IE中的“后退”按钮,则区域选择器仍然显示区域2,但显示区域1的表单元素。我希望区域2的表单元素仍能像Firef

我有一个表单,用户可以在其中查询两个不同的地区。默认情况下,当页面首次加载时,区域1的表单元素将显示,而区域2的表单元素将隐藏。我有一个选择框,用户可以在其中选择要查询的区域,还有一点JavaScript,根据区域的不同显示和隐藏表单的不同部分

这在Firefox和IE中运行良好,除非用户在IE中按下浏览器后退按钮,这通常发生在用户希望进行稍微不同的查询时。如果用户查询区域2,然后按下IE中的“后退”按钮,则区域选择器仍然显示区域2,但显示区域1的表单元素。我希望区域2的表单元素仍能像Firefox一样显示,但如何显示呢

下面是我的代码的一个简单示例:

<script language="javascript" type="text/javascript">
<!-- 

 // Switch between regions
 function changeRegionType(form){
  // get the various elements we whish to manipulate
  var reg1 = getElementById('region_1');
  var reg2 = getElementById('region_2');

  // hide one row, show the other
  if (form['region_type'].value == 'region_1') {
   reg1.style.display = '';
   reg2.style.display = 'none';
  } 
  else if (form['region_type'].value == 'region_2') {
   reg1.style.display = 'none';
   reg2.style.display = '';
  }

  }

// --> 
</script>


<form name="QueryForm" action="something.php" method="get">

 <select name="region_type" onChange="changeRegionType(this.form)">
  <option selected value="region_1">Region One</option>
  <option value="region_2">Region Two</option>
 </select>

 <tr id="region_1">
  <!-- Show this row to people who want to query about region 1 -->
 </tr>

 <tr id="region_2" style="display: none;">
  <!-- Show this row to people who want to query about region 2 -->
 </tr>

</form>

表单字段通过page back/forwards命令记住它们的值,因此当您返回到上一页时,最后选择的值“region two”将在下拉列表中重新选择,但您不会得到一个onchange来告诉您发生了什么

因此,您应该在加载事件时调用changeRegionType函数从选择中更新DOM。这是一部浏览器歌剧吗?实际上表单是在onload之后更新的,因此在onload中0-timeout时触发函数是值得的


由于bfcache,您在Firefox中看不到相同的情况。这将在您离开前一页时保留前一页,只是不显示。当您返回到它时,它可以取消隐藏现有的页面DOM,就像它从未被留下一样。这样做是为了提高向后/向前导航的速度。当bfcache被禁用,或者由于其他页面将其挤出而导致您的页面掉出时,您将看到与IE和其他浏览器相同的行为。Safari 4现在也有一个类似的bfcache功能。

表单字段通过page back/forwards命令记住它们的值,因此当您返回到上一页时,最后选择的值“region two”将在下拉列表中重新选择,但您不会得到一个onchange来告诉您发生了什么

因此,您应该在加载事件时调用changeRegionType函数从选择中更新DOM。这是一部浏览器歌剧吗?实际上表单是在onload之后更新的,因此在onload中0-timeout时触发函数是值得的

由于bfcache,您在Firefox中看不到相同的情况。这将在您离开前一页时保留前一页,只是不显示。当您返回到它时,它可以取消隐藏现有的页面DOM,就像它从未被留下一样。这样做是为了提高向后/向前导航的速度。当bfcache被禁用,或者由于其他页面将其挤出而导致您的页面掉出时,您将看到与IE和其他浏览器相同的行为。Safari4现在也有类似的bfcache功能