如何将cookie保留在网页之外?

时间:2009-10-07 05:40:37

标签: cookies

我在网站上有文字字段。当我输入内容时,按下后退按钮,然后按下前进按钮,我输入的内容仍然存在。

更具体地说,文本框以灰色文本开头。当您第一次键入时,该框会清空灰色文本,然后显示您键入的黑色内容。当你这样做,然后点击后退按钮,然后前进,我们最初输入的内容现在显示为灰色。点击该框不再清除它,进一步输入也是灰色的。

这是我的代码(为阅读而退回的马车):

"<input id="friend_name_0" 
type="text" 
style="color: rgb(119, 119, 119);" 
value="eg: Sharon" 
onblur="if(this.value==''){this.value = 'eg: Sharon'; this.style.color = '#777777';}" onfocus="if(this.value == 'eg: Sharon'){clearField(friend_name_0); this.style.color = '#222222';}" 
maxlength="9" "
name="friend_name_0"/>

谢谢你们!

2 个答案:

答案 0 :(得分:1)

是的,就像Viktor说的那样,它不是饼干。问题是浏览器正在缓存该页面。

在你的例子中,这是相当可取的,因为自从用户返回然后转发之后页面没有改变(例如,假设他们输入了一些信息并忘记了最后一页的内容)。

当页面实际上是一个新页面(第1页和第2页有一些URL,相同形式,不同的预期内容)时,它变得非常混乱,这也是我正在处理的问题。

唯一确定的方法可以防止我所知道的此类行为(无特定顺序):

  1. 使用不同的URL(在url的末尾添加一个随机数字组合作为get变量,将其称为“uid”或其他类似的)。这不会阻止来回,但会使两个具有相同URL的页面被浏览器缓存混淆。

  2. 抛出一些类似“onload:reload”的javascript。显然你不想要一个无限循环,所以你可以有另一个get变量,让脚本知道它是否已经加载过该页面。可能是它检查的页面上的隐藏输入。底线,强制重装页面。

  3. 有一个js脚本,上面写着“onunload,擦除所有用户输入值”。卸载会很好,因为它不会消除POST或GET请求,我不认为,只留下页面上留下的值,因为它被遗忘。

  4. 编写一个js脚本,onload将删除任何没有设置为属性值的字段(即input type='text' value='stuff')如果它看到HTML本身的值,它就会离开它。

  5. 最后一个是我正在做的事情。棘手的部分是确保它不会搞砸页面的可访问性。

答案 1 :(得分:0)

这不是Cookie,而是一个保持表单字段填充的浏览器。初始颜色设置为灰色,因此只有您的脚本会在事件中更改它。你有IF阻止事件,但没有ELSE块来设置它应该。

<input id="friend_name_0" 
type="text" 
style="color: #777777;" 
value="eg: Sharon" 
onblur="if(this.value==''){this.value = 'eg: Sharon'; this.style.color = '#777777';}
else {this.style.color = '#222222';}"
onfocus="if(this.value == 'eg: Sharon'){clearField(friend_name_0); this.style.color = '#222222';}" 
maxlength="9"
name="friend_name_0" />

请记住,当你编写IF块时,你总是应该考虑ELSE,如果不需要则省略它。