diff --git a/IPython/html/static/notebook/js/widgetmanager.js b/IPython/html/static/notebook/js/widgetmanager.js
index 3625b13..f61e573 100644
--- a/IPython/html/static/notebook/js/widgetmanager.js
+++ b/IPython/html/static/notebook/js/widgetmanager.js
@@ -72,6 +72,7 @@
         // Instance level
         //--------------------------------------------------------------------
         WidgetManager.prototype.display_view = function(msg, model) {
+            // Displays a view for a particular model.
             var cell = this.get_msg_cell(msg.parent_header.msg_id);
             if (cell === null) {
                 console.log("Could not determine where the display" + 
@@ -88,9 +89,10 @@
                     cell.widget_subarea.append(view.$el);
                 }
             }
-        },
+        };
 
         WidgetManager.prototype.create_view = function(model, options, view) {
+            // Creates a view for a particular model.
             var view_name = model.get('_view_name');
             var ViewType = WidgetManager._view_types[view_name];
             if (ViewType !== undefined && ViewType !== null) {
@@ -102,16 +104,29 @@
                     options.cell = view.options.cell;
                 }
 
+                // Create and render the view...
                 var parameters = {model: model, options: options};
                 var view = new ViewType(parameters);
                 view.render();
-                IPython.keyboard_manager.register_events(view.$el);
                 model.views.push(view);
                 model.on('destroy', view.remove, view);
+
+                this._handle_new_view(view);
                 return view;
             }
             return null;
-        },
+        };
+
+        WidgetManager.prototype._handle_new_view = function (view) {
+            // Called when a view has been created and rendered.
+
+            // If the view has a well defined element, inform the keyboard
+            // manager about the view's element, so as the element can
+            // escape the dreaded command mode.
+            if (view.$el !== undefined && view.$el !== null) {
+                IPython.keyboard_manager.register_events(view.$el);
+            }
+        }
 
         WidgetManager.prototype.get_msg_cell = function (msg_id) {
             var cell = null;