关于“后退”按钮的问题,为什么在IE中,有些值不能取到?

qiuji 2005-09-26 11:12:57
我在一个页面使用javascript为一个文本框赋值,然后点击一个链接进入到另外一个页面,然后使用浏览器的“后退”按钮返回到前一个页面,出现下面的情况:
IE:
被赋值的文本框:有值
用javascript来取这个文本框的值:取不到值

FireFox:
被赋值的文本框:有值
用javascript来取这个文本框的值:有值

请问这是为什么呢?有什么方法让IE也能取到值吗?
谢谢!
---------------------------------------------
我写了一个简单的代码,可以分别用IE和FireFox运行看到上面的问题,代码如下:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Test back button</title>
<script language=javascript>
function additem()
{
var selectCtrl = document.getElementById("selectCtrl");
var selectedText = document.getElementById("selectedText");
selectedText.value = selectCtrl.options[selectCtrl.selectedIndex].text;
}
</script>
</head>

<body>
1.在列表中双击,选择一个值:<br>
<select size="4" id="selectCtrl" ondblclick="additem();" style="height:120px;width:128px;">
<option value="1">Value 1</option>
<option value="2">Value 2</option>
<option value="3">Value 3</option>
<option value="4">Value 4</option>
<option value="5">Value 5</option>
</select>

Selected text:<input id="selectedText" type=text style="width:200px">
<br>
<br>
2.点击下面的链接,转到一个网页(点击之前,请先看一下3.的说明)<br>
<a href="http://www.microsoft.com">Go to a page</a><br>
<br>
3.使用浏览器的“后退” 按钮,回到此页,看看下面的“Last selected text:”后面有没有值?<br>
<div id="backText">Last selected text:</div>

<script language=javascript>
var selectedText = document.getElementById("selectedText");
var backText= document.getElementById("backText");
backText.innerHTML += selectedText.value;
</script>
</body>

</html>
...全文
149 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiuji 2005-09-26
  • 打赏
  • 举报
回复
To friendlyFour(web开发四人组):
非常感谢你的回答,但是这个方法好像不能从根本上解决问题,如果我修改一下下面的代码:
selectedText.value = selectCtrl.options[selectCtrl.selectedIndex].text;
改成:
selectedText.value += selectCtrl.options[selectCtrl.selectedIndex].text+",";
这样我可以选择多个值到textBox中去,但是进入其他页面再后退,只能在最后显示你最后一次选择的值,而不是多个值。

其实,我原来的代码在FireFox中是没有问题的,不知道为什么在IE中有这样的问题?


zwrtv 2005-09-26
  • 打赏
  • 举报
回复
学习下
wendy_fw 2005-09-26
  • 打赏
  • 举报
回复
up
friendlyFour 2005-09-26
  • 打赏
  • 举报
回复
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Test back button</title>
<script language=javascript>
function additem()
{

var obj=window.selectCtrl;
for(i = 0;i < obj.length;i++){

if(eval("document.all.selectCtrl.options["+i+"].selected")==true){
//alert();
var selectCtrl = document.getElementById("selectCtrl");
var selectedText = document.getElementById("selectedText");
selectedText.value = selectCtrl.options[selectCtrl.selectedIndex].text;
}
}
}
</script>
</head>

<body>
1.在列表中双击,选择一个值:<br>
<select size="4" id="selectCtrl" ondblclick="additem();" style="height:120px;width:128px;">
<option value="1">Value 1</option>
<option value="2">Value 2</option>
<option value="3">Value 3</option>
<option value="4">Value 4</option>
<option value="5">Value 5</option>
</select>

Selected text:<input id="selectedText" type=text style="width:200px">
<br>
<br>
2.点击下面的链接,转到一个网页(点击之前,请先看一下3.的说明)<br>
<a href="http://www.sohu.com">Go to a page</a><br>
<br>
3.使用浏览器的“后退” 按钮,回到此页,看看下面的“Last selected text:”后面有没有值?<br>
<div id="backText">Last selected text:</div>

<script language=javascript>
additem();
var selectedText = document.getElementById("selectedText");
var backText= document.getElementById("backText");
backText.innerHTML += selectedText.value;
</script>
</body>

</html>
friendlyFour 2005-09-26
  • 打赏
  • 举报
回复
你没有明白window.history.go(-1);的意思。
qiuji 2005-09-26
  • 打赏
  • 举报
回复
To mbo(mbo):
谢谢你的回答!你的分析是对的,在前面加一个alert之后确实可以取到值。
在我上面给的地址,net_lover(孟子E章) 已经解决了此问题。
再次感谢大家!

mbo 2005-09-26
  • 打赏
  • 举报
回复
IE在返回的时候会先载入整个页面,这时候文本框的值是空的;然后再载入记忆的值。
我在页尾的script中加了个alert(selectedText.value),返回时可以看到先弹出空值,然后文本框的值出现。

也就是IE里的顺序不对,是先执行JS,再载入文本框的值。所以取不到值。

怎么实现还没搞定,谁搞定了一定告诉大家
qiuji 2005-09-26
  • 打赏
  • 举报
回复
谢谢各位的帮助!
问题已在下面地址解决:
http://community.csdn.net/Expert/topic/4294/4294338.xml
qiuji 2005-09-26
  • 打赏
  • 举报
回复
这个事件应该不需要触发的,因为你可以看到,在返回过来的时候,那个文本框的值还是保留的,但是为什么用javascript就不能取到那个文本框的值呢?
friendlyFour 2005-09-26
  • 打赏
  • 举报
回复
问题我感觉就是在“后退”的时候没有激发additem();事件

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧