今天在测试时发现谷歌Chrome的一个Bug。情形是这样的:页面中有一个文本框,第二个文本框是隐藏的;页面中还有一个<a>标签,链接到另外一个页面;和两个按钮分别用于设置和获取隐藏文本框的值。
页面代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$().ready(function () {
$("#Button1").click(function () {
$("#Text2").val("Some data was cached in the hidden textbox.");
});
$("#Button2").click(function () {
alert($("#Text2").val());
});
});
</script>
</head>
<body>
<a href="http://www.cnblogs.com/kenyang">Ken Yang 的博客</a>
<input id="Button1" type="button" value="Set Cache" />
<input id="Button2" type="button" value="Get Cache" />
<br />
<input id="Text1" type="text" style="width: 300px;" />
<input id="Text2" type="text" style="display: none;" />
</body>
</html>
加载页面后,点击第一个按钮"Set Cache”为隐藏的文本框Text2设置值,然后点击链接跳转到另一个页面,最后点击浏览器的后退按钮返回到该页面。这时你会发现之前给Text2设置的值出现在文本框Text1中,而没有恢复到文本框Text2中(通过点击按钮"Get Cache”获取不到值可知)。效果图如下:
如果改变Text1和Text2在DOM树的顺序(Text2在前,Text1在后),或者点击链接之前为Text1设置了值(哪怕是空值),这个问题都不会出现。
我的Chrome版本号是: 18.0.1025.162。