home · contact · privacy
Remove confirmation dialogue on edit if using newly enabled buttons.
authorChristian Heller <c.heller@plomlompom.de>
Sun, 27 Apr 2025 16:56:42 +0000 (18:56 +0200)
committerChristian Heller <c.heller@plomlompom.de>
Sun, 27 Apr 2025 16:56:42 +0000 (18:56 +0200)
src/templates/_macros.tmpl

index 7d6b9c4a1ebe8316cde09dee787deed0390c31e6..a9a4b22e21e1107be2a0671587b573674787c71a 100644 (file)
@@ -100,10 +100,15 @@ td.direct_target {
 
 
 {% macro js_taint() %}
+var suppress_beforeunload = false;
+
 function taint() {
     // activate buttons "apply", "revert"
     Array.from(document.getElementsByClassName('enable_on_change')).forEach((el) => {
         el.disabled = false;
+        el.addEventListener('click', function(e) {
+           suppress_beforeunload = true;
+        });
     });
     // deactivate "disable_on_change" span contents
     function recursive_span_disable(el) {
@@ -130,9 +135,11 @@ function taint() {
     });
     // try to catch user closing or reloading window
     window.addEventListener('beforeunload', function(e) {
-        e.preventDefault();
-        e.returnValue = true; }
-    );
+        if (!suppress_beforeunload) {
+            e.preventDefault();
+            e.returnValue = true;
+        }
+    });
     // remove oninput handlers no longer needed (since we only ever go one way)
     Array.from(document.querySelectorAll('*')
         ).filter(el => (el.oninput !== null)