【问题标题】:is it possible to prevent user from closing the browser in laravel/javascript or save everything in a database table before the close event是否可以阻止用户在 laravel/javascript 中关闭浏览器或在关闭事件之前将所有内容保存在数据库表中
【发布时间】:2016-07-01 16:34:47
【问题描述】:

我制作了一个记录仓库交易的 laravel 5.2 应用程序.. 现在我的客户希望我提供一个功能,可以防止他的员工关闭浏览器。我知道在桌面应用程序中这是可能的。我的客户想要通过不保存交易来防止他的员工偷钱。有什么办法可以防止用户无法关闭浏览器/窗口,或者如果有人在没有单击保存按钮的情况下关闭浏览器/选项卡/窗口,我可以记录所有内容(以抓住罪犯:D)

【问题讨论】:

标签: javascript jquery laravel


【解决方案1】:

不,您不能阻止用户通过您的网站关闭浏览器,无论是从服务器还是从客户端。安装在计算机上的特殊软件可能会使其成为可能,但雇主可以,例如简单地杀死浏览器进程。

一种降低数据丢失可能性(尽管并非不可能)的解决方法是每次用户在前端更改任何内容时自动保存数据,例如通过XMLHttpRequests

在任何情况下,您都必须确保在后端(不受最终用户的控制)只保存完整且有效的交易,而不完整的交易将被丢弃。通过这样做,您所描述的问题应该是完全可以避免的。

【讨论】:

  • 是否可以通知后端用户关闭了窗口?
  • 不一定。你有onbeforeunload,可以用来在用户定期关闭页面时执行一些代码。但是,如果浏览器以不规则的方式关闭(例如任务被终止),代码将不会被执行。
【解决方案2】:

检查交易是否完成以及谁在处理它也很简单。 员工登录或开始新事务的那一刻,设置了一个标志,表示未完成的事务。此事件也记录在日志中。当事务正确完成时,标志被删除并创建另一个日志条目。如果没有,则日志中可见异常。 通过这种方式,还可以为交易的持续时间设置时间限制。

【讨论】:

    猜你喜欢
    • 2021-03-03
    • 2012-06-08
    • 2016-07-11
    • 1970-01-01
    • 1970-01-01
    • 2020-03-30
    • 2011-11-02
    • 2012-07-15
    • 1970-01-01
    相关资源
    最近更新 更多