John Davidson

php - Detect window closed


I'm creating a chat client which uses a database to check the status of a session 0-waiting, 1-running, 2-closed.

I have a close button which will change the status to 2 but I was wondering, how do I detect if the browser is closed just by pressing x?

The main reason for this is I don't want the session showing up as running when one of the participants has closed their browser.

My Answer:
You can use the `onbeforeunload` event in JavaScript to detect when the browser window is being closed. This event is triggered when the user tries to navigate away from the page, close the browser tab, or close the browser window.

You can use this event to make an AJAX call to your server to update the status of the session to "closed" before the browser window is closed. Here's an example of how you can do this:

window.onbeforeunload = function() {
// Make an AJAX call to update the session status to "closed"
var xhr = new XMLHttpRequest();'POST', 'update_session_status.php', true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.send(JSON.stringify({ status: 2 }));

In the `update_session_status.php` file on your server, you can handle the AJAX request and update the status of the session in the database.

Keep in mind that the `onbeforeunload` event may not work in all browsers and may be blocked by some browser extensions. Additionally, the user may still be able to close the browser window before the AJAX call is completed, so there may be a small window of time where the session status is still showing as "running" even though the browser has been closed.

Rate this post

3 of 5 based on 8858 votes


© 2024 - Personal Blogs Platform. All Rights Reserved.
Create blog  |  Privacy Policy  |  Terms & Conditions  |  Contact Us