强制 ajax 在所有浏览器中工作

Force ajax to work in all browser

我有一个巨大的应用程序 ajax。有时 ajax 在用户关闭浏览器时无法正常工作。发生这种情况是因为他们的浏览器中安装了许多第 3 方插件,这些插件停止(可能)正常工作 ajax。

现在我无法控制用户,所以无法让用户注意他们的浏览器。现在在这种情况下我能做什么。有什么方法可以强制 ajax 即使在浏览器中安装了错误的扩展程序也能正常工作?

当浏览器中安装了错误的扩展(如询问工具栏、阿里巴巴新闻等)时,以下代码不起作用

window.onbeforeunload = function () {

    $.ajax({
        url: site_url + '/agent/send_offline',
        type: 'post',
        cache: false,
        async: false,
       ...
    });
};

您可以通过在浏览器中存储 cookie 来做到这一点,以便在放置 ajax 代码的每一分钟后调用您的页面。试试这个角度

您不能指望在用户离开您的页面时总是能够执行 ajax 调用。这不是您可以在浏览器中可靠地完成的事情。它有时可能会起作用,但不能保证以关闭网页的所有可能方式起作用。

有一些解决方法:

  1. 您可以保持从您的页面到您的服务器的 websocket 连接,当用户离开页面时,套接字将被浏览器自动关闭,然后您的服务器将知道用户离开了页面.

  2. 您可以让您的页面每隔几分钟通过一个简单的 ajax 调用轮询您的服务器,当服务器不再收到轮询 ajax 调用时,它就会知道页面已关闭