我有一些代码,只要用户离开文本框,就会在服务器上异步调用save方法。但是,用户可能会花费很长时间在单个文本框中而不会离开,如果他们的会话超时,那么他们将在尝试保存时丢失他们输入的内容。所以我也想定期保存(也许每分钟一次)。
我想我可以添加一个onfocus事件,每分钟会保存一次该字段,但是当我们离开时我可以使用onblur删除该事件。
旁注:每次自动保存时,都会重新启动会话超时。为了防止他们的会话无限期地进行,我也将检查自上次按键以来已经存在了多长时间,并且如果超过一分钟(或者保存间隔是什么)则不会保存。
一方面,这开始显得过于复杂,所以我不得不问:是否有更简单,更直接的方法来实现这一目标?如果没有,那么我是否应该非常关注onblur事件未被调用且无法断开自动保存事件的任何情况?
答案 0 :(得分:1)
避免"附加"和"分离" onfocus 和中的事件 的的onblur 强>:
在 onfocus 中,仅将当前的焦点字段(DOM节点)保存到 变量
只有一个 setInterval 全局计时器用于自动保存,它会 从该变量中保存字段的字段值
关于会话延续:
只要字段值发生变化,这意味着用户改变了它[除非 你的编辑器非常动态并且可以自我编辑]
因此无需记录按键,只需保留 Last_Saved_Field_Value ,以防止两次保存相同的内容。