{% 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) {
     });
     // 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)