diff options
-rw-r--r-- | ui/draggable.js | 36 |
1 files changed, 23 insertions, 13 deletions
diff --git a/ui/draggable.js b/ui/draggable.js index 3e427babe..3cae40f11 100644 --- a/ui/draggable.js +++ b/ui/draggable.js @@ -94,20 +94,9 @@ $.widget("ui.draggable", $.ui.mouse, { }, _mouseCapture: function(event) { + var o = this.options; - var document = this.document[ 0 ], - o = this.options; - - // support: IE9 - // IE9 throws an "Unspecified error" accessing document.activeElement from an <iframe> - try { - // Support: IE9+ - // If the <body> is blurred, IE will switch windows, see #9520 - if ( document.activeElement && document.activeElement.nodeName.toLowerCase() !== "body" ) { - // Blur any element that currently has focus, see #4261 - $( document.activeElement ).blur(); - } - } catch ( error ) {} + this._blurActiveElement( event ); // among others, prevent a drag on a resizable-handle if (this.helper || o.disabled || $(event.target).closest(".ui-resizable-handle").length > 0) { @@ -134,6 +123,27 @@ $.widget("ui.draggable", $.ui.mouse, { }, + _blurActiveElement: function() { + var document = this.document[ 0 ]; + + // support: IE9 + // IE9 throws an "Unspecified error" accessing document.activeElement from an <iframe> + try { + + // Support: IE9, IE10 + // If the <body> is blurred, IE will switch windows, see #9520 + if ( document.activeElement && document.activeElement.nodeName.toLowerCase() !== "body" ) { + + // Only need to blur if the event occurred on the draggable, see #10527 + if ( this.handleElement.is( event.target ) ) { + + // Blur any element that currently has focus, see #4261 + $( document.activeElement ).blur(); + } + } + } catch ( error ) {} + }, + _mouseStart: function(event) { var o = this.options; |