Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Dialog: Safe activeElement access.
Fixed #9420 - Dialog: Close causes blur of window in IE9
Fixed #8443 - Dialog: "unspecified error" when using ie9 and iframe
- Loading branch information
Showing
with
18 additions
and
5 deletions.
-
+18
−5
ui/jquery.ui.dialog.js
|
@@ -169,7 +169,8 @@ $.widget( "ui.dialog", { |
|
|
enable: $.noop, |
|
|
|
|
|
close: function( event ) { |
|
|
var that = this; |
|
|
var activeElement, |
|
|
that = this; |
|
|
|
|
|
if ( !this._isOpen || this._trigger( "beforeClose", event ) === false ) { |
|
|
return; |
|
@@ -179,10 +180,22 @@ $.widget( "ui.dialog", { |
|
|
this._destroyOverlay(); |
|
|
|
|
|
if ( !this.opener.filter(":focusable").focus().length ) { |
|
|
// Hiding a focused element doesn't trigger blur in WebKit |
|
|
// so in case we have nothing to focus on, explicitly blur the active element |
|
|
// https://bugs.webkit.org/show_bug.cgi?id=47182 |
|
|
$( this.document[0].activeElement ).blur(); |
|
|
|
|
|
// support: IE9 |
|
|
// IE9 throws an "Unspecified error" accessing document.activeElement from an <iframe> |
|
|
try { |
|
|
activeElement = this.document[ 0 ].activeElement; |
|
|
|
|
|
// Support: IE9, IE10 |
|
|
// If the <body> is blurred, IE will switch windows, see #4520 |
|
|
if ( activeElement && activeElement.nodeName.toLowerCase() !== "body" ) { |
|
|
|
|
|
// Hiding a focused element doesn't trigger blur in WebKit |
|
|
// so in case we have nothing to focus on, explicitly blur the active element |
|
|
// https://bugs.webkit.org/show_bug.cgi?id=47182 |
|
|
$( activeElement ).blur(); |
|
|
} |
|
|
} catch ( error ) {} |
|
|
} |
|
|
|
|
|
this._hide( this.uiDialog, this.options.hide, function() { |
|
|