misc: warn user if closing tab on an unsaved form (#6116) #1250

Merged
fpeters merged 1 commits from wip/6116-beforeunload into main 2024-03-15 15:04:45 +01:00
Owner
No description provided.
fpeters changed target branch from wip/39399-draft-autosave-no-change to main 2024-03-15 07:20:44 +01:00
fpeters force-pushed wip/6116-beforeunload from eddc0afada to 6ac79a68d6 2024-03-15 09:56:33 +01:00 Compare
fpeters added 1 commit 2024-03-15 10:12:01 +01:00
gitea/wcs/pipeline/head This commit looks good Details
222ac7a19f
ci: pass JOB_NAME to tox (#88209)
fpeters force-pushed wip/6116-beforeunload from 222ac7a19f to 9491951c71 2024-03-15 11:48:03 +01:00 Compare
fpeters reviewed 2024-03-15 11:52:47 +01:00
@ -150,2 +150,4 @@
var last_auto_save = $('form[data-has-draft]').serialize();
if ($('form[data-warn-on-unsaved-content]').length) {
window.addEventListener('beforeunload', function (e) {
Author
Owner

Côté MDN https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event il est noté

In Firefox, beforeunload is not compatible with the back/forward cache (bfcache): that is, Firefox will not place pages in the bfcache if they have beforeunload listeners, and this is bad for performance.

It is therefore recommended that developers listen for beforeunload only when users have unsaved changes so that the dialog mentioned above can be used to warn them about impending data loss, and remove the listener again when it is not needed. Listening for beforeunload sparingly can minimize the effect on performance.

Mais comme on est déjà sur des pages avec du POST, il n'y a pas de "bfcache" et c'est quand même bien plus simple de poser une seule fois l'évènement, plutôt qu'avoir à détecter tout le temps les changements, donc je préfère nettement ainsi.

Côté MDN https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event il est noté > In Firefox, beforeunload is not compatible with the back/forward cache (bfcache): that is, Firefox will not place pages in the bfcache if they have beforeunload listeners, and this is bad for performance. > > It is therefore recommended that developers listen for beforeunload only when users have unsaved changes so that the dialog mentioned above can be used to warn them about impending data loss, and remove the listener again when it is not needed. Listening for beforeunload sparingly can minimize the effect on performance. Mais comme on est déjà sur des pages avec du POST, il n'y a pas de "bfcache" et c'est quand même bien plus simple de poser une seule fois l'évènement, plutôt qu'avoir à détecter tout le temps les changements, donc je préfère nettement ainsi.
fpeters changed title from WIP: misc: warn user if closing tab on an unsaved form (#6116) to misc: warn user if closing tab on an unsaved form (#6116) 2024-03-15 13:36:13 +01:00
tnoel approved these changes 2024-03-15 14:56:40 +01:00
tnoel left a comment
Owner

Ack avec une petite demande de commentaire sur un truc qui me semble obscur

Ack avec une petite demande de commentaire sur un truc qui me semble obscur
@ -152,0 +154,4 @@
var $form = $('form[data-warn-on-unsaved-content]');
var current_data = $form.serialize();
if (last_auto_save == current_data) return;
e.preventDefault();
Owner

J'ai du aller sur le site de MDN pour comprendre que ces deux lignes preventDefault/returnValue était ce qui provoquait la popup d'alerte. J'ajouterais donc bien au dessus de ces deux lignes ce commentaire :

# trigger the warning dialog when the user closes or navigates the tab.

Et zou.

J'ai du aller sur le site de MDN pour comprendre que ces deux lignes preventDefault/returnValue était ce qui provoquait la popup d'alerte. J'ajouterais donc bien au dessus de ces deux lignes ce commentaire : `# trigger the warning dialog when the user closes or navigates the tab.` Et zou.
Author
Owner

J'ai ajouté un commentaire (un peu différent).

J'ai ajouté un commentaire (un peu différent).
fpeters force-pushed wip/6116-beforeunload from 9491951c71 to 8efea827a1 2024-03-15 14:58:59 +01:00 Compare
fpeters merged commit 8efea827a1 into main 2024-03-15 15:04:45 +01:00
fpeters deleted branch wip/6116-beforeunload 2024-03-15 15:04:45 +01:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: entrouvert/wcs#1250
No description provided.