2008-03-17
一个奇怪的JS导致Firefox Session Restore失效问题
Firefox有一个很有用的Session Restore功能:当浏览器由于异常原因崩溃或者不小心点了刷新按钮时候,能够自动保留之前填写的数据。
但是JavaEye的编辑器不知道什么原因导致这个功能失效,经过调试代码发现了能够重现这个问题的一个简单例子:
用Firefox打开这个html,在textarea里面随便填写一些内容,然后刷新,这些内容就丢失了。
但是令人费解的时候,如果innerHTML里面写的不是input,而且其他html,比如:
这样刷新页面,textarea里面的内容就能够正常保持。
更令人费解的是,只要调整一下第3行和第4行代码的顺序,这个问题也不会出现。
以上情况在Firefox2 @ Ubuntu 7.10或者Windows上都可以重现, 初步怀疑是Firefox的Session Restore bug, 不过在它的bug list上也没有找到,不知道大家有没有遇到过类似问题?
但是JavaEye的编辑器不知道什么原因导致这个功能失效,经过调试代码发现了能够重现这个问题的一个简单例子:
<html>
<body>
<div id="d"></div>
<textarea style="width: 300px; height: 300px;"></textarea>
<script>
var new_div = document.createElement('div');
document.getElementById('d').appendChild(new_div);
new_div.innerHTML = "<input type='button' value='a'/>";
</script>
</body>
</html>
用Firefox打开这个html,在textarea里面随便填写一些内容,然后刷新,这些内容就丢失了。
但是令人费解的时候,如果innerHTML里面写的不是input,而且其他html,比如:
new_div.innerHTML = "<a href='#'>test</a>";
这样刷新页面,textarea里面的内容就能够正常保持。
更令人费解的是,只要调整一下第3行和第4行代码的顺序,这个问题也不会出现。
以上情况在Firefox2 @ Ubuntu 7.10或者Windows上都可以重现, 初步怀疑是Firefox的Session Restore bug, 不过在它的bug list上也没有找到,不知道大家有没有遇到过类似问题?
评论
Quake Wang
2008-03-18
嗯,估计是动态加入的输入控件导致的,只能调整一下原先的页面,让textarea先出现了
hax
2008-03-17
很有趣的发现。估计ff是按照控件顺序进行状态恢复的(否则它要怎么恢复呢?),因此动态插入一个控件会影响状态的恢复。
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 27237 次
- 性别:

- 来自: 上海

- 详细资料
搜索本博客
我的相册
M_100_4350
共 30 张
共 30 张
最近加入圈子
最新评论
-
Java程序员应该学习Ruby
[quote="baichinie"]public interface List ...
-- by unique.wu -
Java程序员应该学习Ruby
看了这个帖子,我终于找到了在本论坛可以多得分的秘密途径,也就是捷径,那就是多写R ...
-- by ltian -
Java程序员应该学习Ruby
以前我主要用.net, 现在改用python, 无论如何不想换回去了. 不过, ...
-- by 白发红颜 -
Java程序员应该学习Ruby
geszJava 写道ruby没啥吸引力,还是groovy好,不容易犯错。rub ...
-- by liusong1111 -
Java程序员应该学习Ruby
ruby没啥吸引力,还是groovy好,不容易犯错。ruby陷阱太多了,如果不是 ...
-- by geszJava






评论排行榜