首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在刷新后防止Firefox恢复先前用户输入的状态

在刷新后防止Firefox恢复先前用户输入的状态
EN

Stack Overflow用户
提问于 2012-03-15 19:50:57
回答 1查看 3.3K关注 0票数 4

我有一个带有几个复选框的页面,这些复选框需要在数据库中表示状态。复选框是AJAX驱动的,因此当选中一个复选框时,会发送一个请求以更新数据库中的状态。如果其视图过时,则更新受影响/相关的视图复选框,并通知用户,并且必须重试。当我刷新时,我希望复选框表示从数据库中的数据生成的HTML中实际返回的内容,而不是以前与输入元素的某些任意用户交互。

如何使Firefox不更新这些与我交互过的复选框,使它们与新接收的HTML中的状态相同?

这个问题令人困惑,因为:

当我在火狐中刷新页面时,复选框的选中属性在新收到的中更新,火狐将按我的预期更新视图。但是,如果我与复选框交互,则刷新该复选框,则不会根据新收到的HTML.更新该复选框。

即。如果checked="checked"或选中的属性是不存在的,那么Firerfox就会保持这种状态,除非我执行移位刷新。

我甚至添加了window.onunload = function(){};,因为我认为它可能是由bfcache造成的,但事实并非如此。

尝试使用以下标题,但它仍然恢复了状态。

代码语言:javascript
运行
复制
HTTP/1.1 200 OK
Date: Thu, 15 Mar 2012 21:19:02 GMT
Server: Apache/2.2.20 (Ubuntu)
Expires: 0
Pragma: no-cache
Cache-Control: no-cache, no-store, must-revalidate
Vary: Accept-Encoding
Content-Encoding: gzip
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html;charset=ISO-8859-1

尝试在元素上循环,尽管源html中不存在选中的属性,JavaScript认为选中的属性被“选中”,因此在Firefox恢复以前输入的值之后,无法从接收的源恢复值。

相反也是真的..。消息来源说,checked="checked"和onload JavaScript考虑检查undefined

源,用于在第一个复选框的状态上发出警报。

代码语言:javascript
运行
复制
window.onload = function() {   
    $('input[type="checkbox"]').each(function() {
        alert($(this).attr('checked'));
        return false
    });
}
EN

回答 1

Stack Overflow用户

发布于 2012-03-15 21:52:29

document.formname.reset()起作用了,这似乎是从原来的HTML恢复的。这是我尝试过的唯一有效的方法..。

感谢丹尼斯为类似的问题发布了这个答案。Firefox: How to reload form *without* caching user-input?

这个解决方案的唯一问题是,我不需要表单,也不使用表单,或者提交表单等等。我使用这些复选框创建一个用户界面,这似乎是一个完全有效的用例,但为了使其工作,我需要将所有输入与表单相关联。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9727117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档