diff --git a/webroot/rsrc/externals/javelin/lib/Workflow.js b/webroot/rsrc/externals/javelin/lib/Workflow.js
--- a/webroot/rsrc/externals/javelin/lib/Workflow.js
+++ b/webroot/rsrc/externals/javelin/lib/Workflow.js
@@ -404,14 +404,18 @@
         }
       }
 
-      var form = JX.DOM.scry(this._root, 'form', 'jx-dialog');
-      if (form.length) {
-        JX.DOM.listen(form[0], 'keydown', null, function(e) {
-          if (e.getSpecialKey()) {
-            return;
-          }
-          JX.Stratcom.addSigil(form[0], 'dialog-keydown');
-        });
+      // Only when the response is a Dialog, check if the user
+      // is quitting with pending changes
+      if (this._root) {
+        var form = JX.DOM.scry(this._root, 'form', 'jx-dialog');
+        if (form.length) {
+          JX.DOM.listen(form[0], 'keydown', null, function(e) {
+            if (e.getSpecialKey()) {
+              return;
+            }
+            JX.Stratcom.addSigil(form[0], 'dialog-keydown');
+          });
+        }
       }
     },
     _push : function() {
@@ -546,13 +550,20 @@
         return;
       }
 
-      var form = JX.DOM.scry(active._root, 'form', 'jx-dialog');
-      if (
-        form.length &&
-        JX.Stratcom.hasSigil(form[0], 'dialog-keydown') &&
-        !confirm('Form data may have changed. Are you sure you want to close this dialog?')
-      ) {
-        return;
+      // Only when the response is a Dialog, check if the user
+      // is quitting with pending changes
+      if (active._root) {
+        var form = JX.DOM.scry(active._root, 'form', 'jx-dialog');
+        var confirmMsg =
+          'Form data may have changed. ' +
+          'Are you sure you want to close this dialog?';
+        if (
+          form.length &&
+          JX.Stratcom.hasSigil(form[0], 'dialog-keydown') &&
+          !window.confirm(confirmMsg)
+        ) {
+          return;
+        }
       }
 
       JX.Workflow._pop();