gpt4 book ai didi

javascript - 关闭 Chrome 窗口未在卸载事件处理程序中使用 sendBeacon 发送数据

转载 作者:行者123 更新时间:2023-12-03 17:10:17 28 4
gpt4 key购买 nike

我试图在窗口关闭时发送数据,以防止 2 人编辑和覆盖彼此的数据。目前我在卸载事件处理程序中使用 sendBeacon。
火狐:

  • 刷新:作品
  • 返回按钮:作品
  • 关闭窗口:作品

  • Chrome :
  • 刷新:作品
  • 返回按钮:作品
  • 关闭窗口:不起作用

  • 这是我的代码
    function sendDataOnClose(edit,trans){

    var url = "../../save.php"; //This has a post request handler and works properly with other functions for saving data

    const data = JSON.stringify
    ({
    "translations": trans,
    "edit": edit
    });

    navigator.sendBeacon(url, data);
    }

    function handleClose(){
    if(edit){
    console.log("sending a false when edit is: "+ edit)
    sendDataOnClose(false, translations);
    }
    }

    window.addEventListener('unload', handleClose);

    最佳答案

    多亏了黑客,出于安全原因,许多其他东西都被删除了。
    我注意到你的问题也有 PHP 标签;我会给你一个,不是好主意,而是一个实用的。避免关闭页面处理,即使是 JavaScript 或框架也只是使用 JavaScript 发布一个表数据库来存储 time()和一个目标 ID,然后如果超时可能超过 30 秒,那么您将从表中删除这些东西,并且您会知道该页面仍然无法正常工作(翻译:使用服务器“在线用户”的想法(不好但必要像任何东西一样会在应用程序中产生大量流量)。
    在客户端的 JavaScript 中使用这些是个坏主意,你会为利用你的应用程序的坏人打开大门。

    关于javascript - 关闭 Chrome 窗口未在卸载事件处理程序中使用 sendBeacon 发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64773529/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com