document.write()vs插入DOM节点:保留表单信息?

Shr*_*saR 6 javascript usability firefox

考虑两个网页,分别在其正文中包含以下内容:

<body>
<script>
document.writeln('<textarea></textarea>')
</script>
</body>
Run Code Online (Sandbox Code Playgroud)

<body>
<script>
var t = document.createElement('textarea');
document.body.appendChild(t);
</script>
</body>
Run Code Online (Sandbox Code Playgroud)

(将它们视为更大的一部分,其中textareas 必须由JavaScript生成,不能硬编码到页面中).它们都产生相同的输出,但前者被认为是"坏",而后者被认为是"正确"的方式.(对?)

另一方面,如果你在页面中键入内容然后刷新它,或者转到其他地方然后点击Back,那么在前一种情况下,你在textarea中输入的内容会被保留,而在后面它会丢失.(至少在Firefox上.)

有没有办法使用后一种方法,仍然有一个有用的功能,即即使用户不小心点击刷新或通过后退按钮(至少在Firefox上)回来,用户输入表单的内容也会被保存?

Cha*_*ert 5

我相信document.write版本实际上会破坏页面上的现有内容.即,身体和脚本标签将不再存在.这就是人们通常使用appendChild的原因.

是否保留文本是特定于浏览器的.我不打赌Firefox在将来的版本中也不会改变它的行为.当用户尝试离开页面并且编辑字段中有未保存的内容时,我建议实施警报对话框.通常你会在卸载事件中执行此操作.

  • 实际上,如果您不在页面的初始加载中,它将会出现.如果您稍后再这样做,请说当Ajax调用返回时,它将擦除页面. (2认同)