火狐浏览器表单恢复的控制

5
我有一个页面,其中包含多个复选框输入元素。切换这些元素会以只能在Javascript中完成的方式改变页面的外观。
我的问题出现在您关闭并重新打开页面时。页面加载后的短暂(看似不一致)时刻后,Firefox恢复了复选框的状态,但没有引发它们的onchange事件。
有没有办法确定Firefox何时恢复这些元素,或者至少有没有任何方法可以禁用此功能,而无需要求用户更改其浏览器设置?
我还使用jQuery,如果有任何可以帮助的内容,请告诉我。
在输入上使用autocomplete =“off”没有效果。

最好在加载事件触发时重置表单 - document.forms[0].reset() - RobG
2个回答

4
如果你只需要触发更改处理程序,以匹配页面状态与用户的最后偏好(这似乎是个好主意),那么像这样做应该就可以了。
$(window).load ( function () {
    $('input:checked').change ();
} );


在 jsBin 上查看演示


1
哇,我注意到它是在 document.ready 之后一段时间发生的,从未尝试过 load 事件。谢谢! - YotaXP

2
"切换这些会改变页面的外观"
"这就是问题所在。页面应该依赖于切换的状态,而不是在切换时改变。我也曾经与“更改”事件和浏览器历史进行过搏斗。与其与之抗争,不如将其作为用户特定数据的免费存储来接受它。根据输入状态绘制页面,即使您认为您知道它应该是什么。"
"如果您发布一些具体的代码,我可以建议修改。"

基本上,当您切换这些框时会发生以下情况...一个元素将永久从DOM中删除,另一个元素使用动画隐藏(如果清除所有框,则取消隐藏),HTML被写入到几个DIV以加载Flash对象,并且各种DIV(取决于选中的框)被调整大小和定位,以便它们可以同时适合屏幕。此页面的设计旨在永远不使用比窗口提供的空间更多或更少。(在这方面类似于Grooveshark。) - YotaXP
我只是在说这两个功能应该分开。使用“change”事件,但让它调用一个“stateOfToggle”函数来进行实际操作。然后你可以在document.ready上触发相同的处理程序,并重新创建用户复选框的效果。 - Sinetheta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接