【发布时间】:2016-07-01 16:34:47
【问题描述】:
我制作了一个记录仓库交易的 laravel 5.2 应用程序.. 现在我的客户希望我提供一个功能,可以防止他的员工关闭浏览器。我知道在桌面应用程序中这是可能的。我的客户想要通过不保存交易来防止他的员工偷钱。有什么办法可以防止用户无法关闭浏览器/窗口,或者如果有人在没有单击保存按钮的情况下关闭浏览器/选项卡/窗口,我可以记录所有内容(以抓住罪犯:D)
【问题讨论】:
标签: javascript jquery laravel
我制作了一个记录仓库交易的 laravel 5.2 应用程序.. 现在我的客户希望我提供一个功能,可以防止他的员工关闭浏览器。我知道在桌面应用程序中这是可能的。我的客户想要通过不保存交易来防止他的员工偷钱。有什么办法可以防止用户无法关闭浏览器/窗口,或者如果有人在没有单击保存按钮的情况下关闭浏览器/选项卡/窗口,我可以记录所有内容(以抓住罪犯:D)
【问题讨论】:
标签: javascript jquery laravel
不,您不能阻止用户通过您的网站关闭浏览器,无论是从服务器还是从客户端。安装在计算机上的特殊软件可能会使其成为可能,但雇主可以,例如简单地杀死浏览器进程。
一种降低数据丢失可能性(尽管并非不可能)的解决方法是每次用户在前端更改任何内容时自动保存数据,例如通过XMLHttpRequests。
在任何情况下,您都必须确保在后端(不受最终用户的控制)只保存完整且有效的交易,而不完整的交易将被丢弃。通过这样做,您所描述的问题应该是完全可以避免的。
【讨论】:
onbeforeunload,可以用来在用户定期关闭页面时执行一些代码。但是,如果浏览器以不规则的方式关闭(例如任务被终止),代码将不会被执行。
检查交易是否完成以及谁在处理它也很简单。 员工登录或开始新事务的那一刻,设置了一个标志,表示未完成的事务。此事件也记录在日志中。当事务正确完成时,标志被删除并创建另一个日志条目。如果没有,则日志中可见异常。 通过这种方式,还可以为交易的持续时间设置时间限制。
【讨论】: