From 05cbba6d56859e27a36cfc39592cfd673c7acaa8 Mon Sep 17 00:00:00 2001 From: Matti Tahvonen Date: Wed, 9 Oct 2024 17:42:51 +0300 Subject: [PATCH] Sends beacon request in beforeunload event in Firefox (#20198) Firefox has a bug/feature that it don't send the beacon in pagehide event. Closes #19305 --- .../com/vaadin/client/ApplicationConnection.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/flow-client/src/main/java/com/vaadin/client/ApplicationConnection.java b/flow-client/src/main/java/com/vaadin/client/ApplicationConnection.java index 1f3db48ce8c..62fab73ff9b 100644 --- a/flow-client/src/main/java/com/vaadin/client/ApplicationConnection.java +++ b/flow-client/src/main/java/com/vaadin/client/ApplicationConnection.java @@ -116,9 +116,16 @@ public void start(ValueMap initialUidl) { registry.getMessageHandler().handleMessage(initialUidl); } - Browser.getWindow().addEventListener("pagehide", e -> { - registry.getMessageSender().sendUnloadBeacon(); - }); + if (BrowserInfo.get().isFirefox()) { + // Sends in beforeunload in FF (don't support beacon in pagehide) + Browser.getWindow().addEventListener("beforeunload", e -> { + registry.getMessageSender().sendUnloadBeacon(); + }); + } else { + Browser.getWindow().addEventListener("pagehide", e -> { + registry.getMessageSender().sendUnloadBeacon(); + }); + } Browser.getWindow().addEventListener("pageshow", e -> { // Currently only Safari gets here, sometimes when going back/foward