我正在开发一个 Chrome 应用程序(又名打包应用程序),其中大部分工作都发生在 textarea 元素中,我想确保自动保存用户的工作。
一种不切实际的方法是在每次击键和对文本区域进行其他更改时将工作保存在文件中,如下所示:
$('#text').on("keypress paste cut change", function () {
// ... save to file
});
但是这样的开销太大了,所以我只是设置了一个脏标志,现在的问题是如果设置了脏标志,则在适当的时间进行保存。这些是我想出的一些合适的时间,所有这些都很容易实现:
每分钟,这是 chrome.alarms.onAlarm 允许的最小间隔。
当用户使用 File 菜单上的 Quit 项退出应用程序时。
当用户明确选择文件菜单上的保存项目时。(这可能会在最终版本中消失,但在开发过程中非常方便。)
问题是当用户关闭应用程序或整个浏览器时没有可用的事件。这些事件确实存在于 JavaScript 中,但它们在 Chrome 应用程序中被明确禁止。据我了解,其理由是 Chrome 开发人员不想提供这种拐杖,而是希望鼓励应用程序开发人员实施能够持续节省工作的应用程序。美好的!我完全赞成。
任何想法如何在 Chrome 应用程序中实现自动保存?
更新:我刚刚看了一下 Gliffy Diagrams,它可能是迄今为止最雄心勃勃的 Chrome 应用程序,当它通过应用程序窗口或 Dock 关闭时,它不会进行任何保存。仅当从其文件菜单中选择关闭或保存时才会这样做。这基本上就是我的应用程序所做的。