【问题标题】:Inserting into database just before leaving the page在离开页面之前插入数据库
【发布时间】:2013-11-09 06:16:57
【问题描述】:

这就是我捕捉用户离开页面的方式。

window.onbeforeunload = function (evt) {
    var message = "Are you sure you want to leave?";
    if (typeof evt == 'undefined') {
        evt = window.event;
    }
    if (evt) {
        evt.returnValue = message;
    }
    return message;
}

</script>

现在我想要捕获用户单击“离开此页面”并将某些内容插入数据库。这怎么可能?

【问题讨论】:

    标签: c# javascript asp.net .net c#-4.0


    【解决方案1】:

    如果您不向他们显示对话框,您可以(尝试)捕获离开的用户。 (如果您确实向他们显示对话框,则没有很多选项。)

    您必须向onebeforeunload 中的服务器发出同步请求。

    onbeforeunload = function() {
        var data = 'id=123';
        var xhr = new XMLHttpRequest;
        xhr.open('POST', '/imleavingthepage', false);
        xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xhr.setRequestHeader("Content-length", data.length);
        xhr.send(data);
    }
    

    但要知道这不一定可靠。 onbeforeunload 不标准,浏览器可能连请求都不发送。

    不过,我已经在 Chrome 中做到了这一点,而且通常是成功的。

    【讨论】:

    • 好的,我不会显示对话框,但请帮助我在关闭选项卡/浏览器时调用方法或单击事件,以便我可以将数据插入数据库中
    • @MangalPandey,我已经提供了这一点,尽管这永远不会完全可靠。如果用户告诉浏览器关闭它,就不会希望您的页面向您的服务器发出请求。
    • 仅供参考,这就是为什么即使您关闭了该选项卡,Google 文档有时也会认为您仍在文档中。甚至 Google 也容易受到这种限制。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-30
    • 1970-01-01
    • 1970-01-01
    • 2011-04-28
    • 2014-12-01
    • 2020-10-27
    • 2021-08-19
    相关资源
    最近更新 更多