diff --git a/game/03-JavaScript/ingame.js b/game/03-JavaScript/ingame.js
index 96bcd76e78649781f1de35f34861759cacdeb825..460a7246d31bd13fa6b7a3dffd2ac225f379c1e6 100644
--- a/game/03-JavaScript/ingame.js
+++ b/game/03-JavaScript/ingame.js
@@ -1931,3 +1931,30 @@ function beastMaleChance(override){
 	return 50;	
 }
 window.beastMaleChance = beastMaleChance;
+
+/**
+ * Event listener for the 'beforeunload' event. Will prompt a dialog box asking the player if he wants to leave.
+ *
+ * @param {object} event 'beforeunload' event
+ * @returns {void}
+ */
+function onBrowserTabClose(event) {
+	event.preventDefault();
+	event.returnValue = 'Are you sure you want to leave?'; // the string here isn't important, it's mostly not considered by the browser.
+}
+
+/**
+ * Enable or disable the confirm dialog based on V.options.confirmDialogUponTabClose value evaluating to true or not
+ *
+ * @returns {void}
+ */
+function toggleConfirmDialogUponTabClose(){
+	if (V.options.confirmDialogUponTabClose === true) {
+		window.addEventListener('beforeunload', onBrowserTabClose);
+	}
+	else if (V.options.confirmDialogUponTabClose === false) {
+		window.removeEventListener('beforeunload', onBrowserTabClose);
+	}
+}
+
+window.toggleConfirmDialogUponTabClose = toggleConfirmDialogUponTabClose;
diff --git a/game/04-Variables/variables-passageHeader.twee b/game/04-Variables/variables-passageHeader.twee
index 37aebc8f9f238e58636cfe6d7b35ac3643df6d61..9bffc36b694a804cd4755f230219951f63022a0a 100644
--- a/game/04-Variables/variables-passageHeader.twee
+++ b/game/04-Variables/variables-passageHeader.twee
@@ -44,6 +44,7 @@
 		<<run syncFavourites()>>
 		<<run initCustomLenses()>>	/* push custom eyelenses inside setup.colours.eyes; on every load/refresh it needs to be done. */
 		<<run syncDebugAddedEvents()>>
+		<<run toggleConfirmDialogUponTabClose()>> /* enable/disable confirm dialog when user tries to close browser tab. based on V.options.confirmDialogUponTabClose */
 	<</if>>
 
 	/* Variables that you need to check on every passage */
diff --git a/game/04-Variables/variables-start2.twee b/game/04-Variables/variables-start2.twee
index 81a3d57fdebcd001d4e4d8622079a403f741ac0f..f413fcff0b187d55c2a8b042df1fd68502e5f473 100644
--- a/game/04-Variables/variables-start2.twee
+++ b/game/04-Variables/variables-start2.twee
@@ -356,4 +356,11 @@
 		<<applyFeatsBoost>>
 	<</if>>
 
+	<<if $ironmanmode is true>>
+		<<set $options.confirmDialogUponTabClose to true>>
+	<<else>>
+		<<set $options.confirmDialogUponTabClose to false>>
+	<</if>>
+	<<run toggleConfirmDialogUponTabClose()>>
+
 <</widget>>
diff --git a/game/04-Variables/variables-versionUpdate.twee b/game/04-Variables/variables-versionUpdate.twee
index d6bef3e47faa45441f56abb756db74ba89f64a98..59335288cddb57910a2745e9cb89a99aca7862f9 100644
--- a/game/04-Variables/variables-versionUpdate.twee
+++ b/game/04-Variables/variables-versionUpdate.twee
@@ -4518,4 +4518,13 @@
 	<<if $speech_attitude is undefined>>
 		<<set $speech_attitude to "neutral">>
 	<</if>>
+
+	<!-- V0.4.1.7 Set V.options.confirmDialogUponTabClose for the new confirm dialog box prompting when user closes/refresh tab -->
+	<<if $options.confirmDialogUponTabClose is undefined>>
+		<<if $ironmanmode is true>>
+			<<set $options.confirmDialogUponTabClose to true>>
+		<<else>>
+			<<set $options.confirmDialogUponTabClose to false>>
+		<</if>>
+	<</if>>
 <</widget>>
diff --git a/game/base-system/overlays/options.twee b/game/base-system/overlays/options.twee
index 5fae5a70d5fd57c2359655fd729a9437c52b27df..e7177f9c4163d06a80a7051743e53c64d3e46762 100644
--- a/game/base-system/overlays/options.twee
+++ b/game/base-system/overlays/options.twee
@@ -488,6 +488,12 @@ IMPORTANT:
 					.prependTo("#idbToggle"))>> Enable indexedDB
 			</label>
 		</div>
+		<div class="settingsToggle">
+			<label onclick="setTimeout(() => {toggleConfirmDialogUponTabClose();}, 100)">
+				<<checkbox "$options.confirmDialogUponTabClose" false true autocheck>>
+				Prompt confirmation dialog upon closing tab
+			</label>
+		</div>
 		<div style="clear:both;">/*Keep at end of toggles*/</div>
 	</div>
 	<br>