Skip to content

Commit

Permalink
Dialog: Safe activeElement access.
Browse files Browse the repository at this point in the history
Fixed #9420 - Dialog: Close causes blur of window in IE9
Fixed #8443 - Dialog: "unspecified error" when using ie9 and iframe
(cherry picked from commit 2dfe85d)
  • Loading branch information
tjvantoll authored and scottgonzalez committed Nov 26, 2013
1 parent fd80c34 commit 29e8077
Showing 1 changed file with 18 additions and 5 deletions.
23 changes: 18 additions & 5 deletions ui/jquery.ui.dialog.js
Expand Up @@ -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;
Expand All @@ -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() {
Expand Down

0 comments on commit 29e8077

Please sign in to comment.