Browse Source

Only prevent unload the first time it is attempted

Kevin Sawicki 8 years ago
parent
commit
cce6be1900

+ 6 - 1
spec/fixtures/api/beforeunload-false.html

@@ -1,11 +1,16 @@
 <html>
 <body>
 <script type="text/javascript" charset="utf-8">
+  // Only prevent unload on the first window close
+  var unloadPrevented = false;
   window.onbeforeunload = function() {
     setTimeout(function() {
       require('electron').remote.getCurrentWindow().emit('onbeforeunload');
     }, 0);
-    return false;
+    if (!unloadPrevented) {
+      unloadPrevented = true;
+      return false;
+    }
   }
 </script>
 </body>

+ 7 - 1
spec/fixtures/api/close-beforeunload-empty-string.html

@@ -1,11 +1,17 @@
 <html>
 <body>
 <script type="text/javascript" charset="utf-8">
+  // Only prevent unload on the first window close
+  var unloadPrevented = false;
   window.onbeforeunload = function() {
     setTimeout(function() {
       require('electron').remote.getCurrentWindow().emit('onbeforeunload');
     }, 0);
-    return '';
+
+    if (!unloadPrevented) {
+      unloadPrevented = true;
+      return '';
+    }
   }
   window.close();
 </script>

+ 6 - 1
spec/fixtures/api/close-beforeunload-false.html

@@ -1,11 +1,16 @@
 <html>
 <body>
 <script type="text/javascript" charset="utf-8">
+  // Only prevent unload on the first window close
+  var unloadPrevented = false;
   window.onbeforeunload = function() {
     setTimeout(function() {
       require('electron').remote.getCurrentWindow().emit('onbeforeunload');
     }, 0);
-    return false;
+    if (!unloadPrevented) {
+      unloadPrevented = true;
+      return false;
+    }
   }
   window.close();
 </script>