From ecde73d0523872c7b1573785c05b0cda15fd820c Mon Sep 17 00:00:00 2001 From: Corentin SORIANO Date: Tue, 4 Nov 2025 14:48:49 +0100 Subject: [PATCH] GUACAMOLE-1292: Prompt user to confirm closing guacamole if at least one client is active. --- .../app/client/services/guacClientManager.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/guacamole/src/main/frontend/src/app/client/services/guacClientManager.js b/guacamole/src/main/frontend/src/app/client/services/guacClientManager.js index 990d10cde..bcbb7a3f0 100644 --- a/guacamole/src/main/frontend/src/app/client/services/guacClientManager.js +++ b/guacamole/src/main/frontend/src/app/client/services/guacClientManager.js @@ -320,8 +320,27 @@ angular.module('client').factory('guacClientManager', ['$injector', }; + /** + * Handles the beforeunload event. If any managed clients are active, the + * user is prompted to confirm leaving the page. + * + * @param {event} e + * The beforeunload event. + */ + service.beforeUnload = function beforeUnload(e) { + const managedClients = storedManagedClients(); + + if (Object.keys(managedClients).length > 0) { + e.preventDefault(); + + // For older browsers + e.returnValue = true; + } + }; + // Disconnect all clients when window is unloaded $window.addEventListener('unload', service.clear); + $window.addEventListener('beforeunload', service.beforeUnload); return service;