diff --git a/src/lib/project-saver-hoc.jsx b/src/lib/project-saver-hoc.jsx
index cd6be4ca7c8f144635f55a99cefb2d32a1388199..0ddcd967fc20372e9644b30e3d6172aa401b9ee4 100644
--- a/src/lib/project-saver-hoc.jsx
+++ b/src/lib/project-saver-hoc.jsx
@@ -44,9 +44,15 @@ const ProjectSaverHOC = function (WrappedComponent) {
         constructor (props) {
             super(props);
             bindAll(this, [
+                'leavePageConfirm',
                 'tryToAutoSave'
             ]);
         }
+        componentWillMount () {
+            if (typeof window === 'object') {
+                window.addEventListener('beforeunload', this.leavePageConfirm);
+            }
+        }
         componentDidUpdate (prevProps) {
             if (this.props.projectChanged && !prevProps.projectChanged) {
                 this.scheduleAutoSave();
@@ -86,6 +92,15 @@ const ProjectSaverHOC = function (WrappedComponent) {
         }
         componentWillUnmount () {
             this.clearAutoSaveTimeout();
+            window.removeEventListener('beforeunload', this.leavePageConfirm);
+        }
+        leavePageConfirm (e) {
+            if (this.props.projectChanged) {
+                // both methods of returning a value may be necessary for browser compatibility
+                (e || window.event).returnValue = true;
+                return true;
+            }
+            return false; // do not prompt
         }
         clearAutoSaveTimeout () {
             if (this.props.autoSaveTimeoutId !== null) {