Javascript chrome应用程序中的自动保存(打包应用程序)
我正在开发一个Chrome应用程序(也称为打包应用程序),其中大部分工作发生在textarea元素中,我希望确保用户的工作自动保存 一种不切实际的方法是在每次击键和对textarea进行其他更改时将工作保存在一个文件中,如下所示:Javascript chrome应用程序中的自动保存(打包应用程序),javascript,google-chrome,Javascript,Google Chrome,我正在开发一个Chrome应用程序(也称为打包应用程序),其中大部分工作发生在textarea元素中,我希望确保用户的工作自动保存 一种不切实际的方法是在每次击键和对textarea进行其他更改时将工作保存在一个文件中,如下所示: $('#text').on("keypress paste cut change", function () { // ... save to file }); 但是这会带来太多的开销,所以我只是设置了一个脏标志,现在的问题是,如果设置了脏标志,那么在适当的
$('#text').on("keypress paste cut change", function () {
// ... save to file
});
但是这会带来太多的开销,所以我只是设置了一个脏标志,现在的问题是,如果设置了脏标志,那么在适当的时候进行保存。我想出了一些合适的时机,所有这些都很容易实现:
更新:我只是看了一下Gliffy图表,这可能是迄今为止最雄心勃勃的Chrome应用程序,当它通过应用程序窗口或dock关闭时,它不会进行任何保存。仅当从文件菜单中选择“关闭”或“保存”时,才会执行此操作。这就是我的应用程序的基本功能。您可以在当前设置脏标志的函数中使用普通JavaScript计时器(例如,5秒)。每次按键时重置计时器,使autosave在5秒不活动后启动:
var inactiveTimer;
$('#text').on("keypress paste cut change", function () {
clearTimeout(inactiveTimer);
// save after 5 seconds, unless another keypress resets this timer
inactiveTimer = setTimeout(saveText, 5000);
}
因此,您仅在用户5秒钟内未执行任何操作时保存,而不是在每次按键后保存。显然,这不能处理用户在完成键入后4秒关闭应用程序的情况,但这比您的选项#1要好。您是否可以在当前设置脏标志的函数中使用非活动超时(例如,5秒)?也就是说,每次按键时,重置一个计时器:
clearTimeout(inactiveTimer);inactiveTimer=setTimeout(saveText,5000)
。因此,您仅在用户5秒钟内未执行任何操作时保存,而不是在每次按键后保存。显然,这无法处理用户在完成输入后4秒关闭应用程序的情况,但这比您的选项要好#1.听起来很有希望。。。如果Chrome应用程序的分辨率比闹钟的分辨率高,我会研究一下这个计时器。试过这个,效果很好。在实施警报时,我完全忘记了计时器!(请参考答案中的注释,以便我标记。)