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

时间:2015-04-02 07:13:07

标签: php jquery ajax browser

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

现在我无法控制用户,因此无法让用户关注他们的浏览器。现在我能在这种情况下做些什么。即使在浏览器中安装了错误的扩展名,有没有办法强制ajax工作?

在浏览器中安装了不良扩展程序(如询问工具栏,阿里巴巴新闻自动收报机等)后,代码无法正常工作

window.onbeforeunload = function () {

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

2 个答案:

答案 0 :(得分:3)

当用户离开您的网页时,您无法始终能够执行ajax调用。这不是你可以在浏览器中可靠地做的事情。它有时可能有效,但不能保证以一切可能的方式工作,以便关闭网页。

有一些解决方法:

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

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

答案 1 :(得分:0)

你可以通过在浏览器中存储cookie来在放置ajax代码的每一分钟后调用你的页面来实现。尝试这个角度