我在网站上有文字字段。当我输入内容时,按下后退按钮,然后按下前进按钮,我输入的内容仍然存在。
更具体地说,文本框以灰色文本开头。当您第一次键入时,该框会清空灰色文本,然后显示您键入的黑色内容。当你这样做,然后点击后退按钮,然后前进,我们最初输入的内容现在显示为灰色。点击该框不再清除它,进一步输入也是灰色的。
这是我的代码(为阅读而退回的马车):
"<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"/>
谢谢你们!
答案 0 :(得分:1)
是的,就像Viktor说的那样,它不是饼干。问题是浏览器正在缓存该页面。
在你的例子中,这是相当可取的,因为自从用户返回然后转发之后页面没有改变(例如,假设他们输入了一些信息并忘记了最后一页的内容)。
当页面实际上是一个新页面(第1页和第2页有一些URL,相同形式,不同的预期内容)时,它变得非常混乱,这也是我正在处理的问题。
唯一确定的方法可以防止我所知道的此类行为(无特定顺序):
使用不同的URL(在url的末尾添加一个随机数字组合作为get变量,将其称为“uid”或其他类似的)。这不会阻止来回,但会使两个具有相同URL的页面被浏览器缓存混淆。
抛出一些类似“onload:reload”的javascript。显然你不想要一个无限循环,所以你可以有另一个get变量,让脚本知道它是否已经加载过该页面。可能是它检查的页面上的隐藏输入。底线,强制重装页面。
有一个js脚本,上面写着“onunload,擦除所有用户输入值”。卸载会很好,因为它不会消除POST或GET请求,我不认为,只留下页面上留下的值,因为它被遗忘。
编写一个js脚本,onload将删除任何没有设置为属性值的字段(即input type='text' value='stuff'
)如果它看到HTML本身的值,它就会离开它。
最后一个是我正在做的事情。棘手的部分是确保它不会搞砸页面的可访问性。
答案 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,如果不需要则省略它。