序言范围我的问题:
我有一个 Web 应用程序(或站点,这是一个内部 LAN 站点),它广泛使用 jQuery 和 AJAX 在浏览器中动态加载 UI 的内容部分。用户使用导航菜单导航应用程序。单击导航菜单中的项目会对 php 进行 AJAX 调用,然后 php 返回用于填充中心内容部分的内容。
由 php 提供的其中一个页面有一个表格,其设置类似于电子表格,用户可以在其中输入值。该表始终与数据库中的数据保持同步。因此,当创建表时,它是否填充了相关的数据库数据。然后,当用户在“单元格”中进行更改时,该更改会立即写回数据库,因此表和数据库始终保持同步。这种方法是为了向用户保证他们输入的数据已被保存(长篇大论......),并减轻他们不得不点击某种保存按钮的负担。
所以,这个总是同步的想法很好,除了用户可以在一个单元格中输入一个值,而不是将焦点移出单元格,然后采取任何可能导致最后一个值丢失的操作:例如导航到通过导航菜单访问网站的另一部分,退出应用程序,关闭浏览器等。
序言结束,正题:
我最初认为这不是问题,因为我只会跟踪哪些数据是“脏的”或未保存的,然后在 onunload 事件中我会对数据库进行最后的写入。问题就在这里:由于我聪明(或不太聪明,不确定)使用 AJAX 并动态加载内容部分,当采取上述操作时,用户实际上从未离开原始 url 或页面,除了关闭浏览器。因此,onunload 事件不会触发,我又回到了丢失最后一个数据的状态。
我的问题是,当以这种方式动态加载内容时,是否有推荐的方法来确定一个人是否正在离开应用程序的“部分”?
我可以想出一个我认为的解决方案,它涉及全局变量和跟踪当前查看的页面,但我想我会检查是否有更优雅的解决方案,或者我可以在我的设计中做出改变,这将使这项工作。
一如既往地提前感谢!