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