mirror of
https://github.com/jquery/jquery-ui.git
synced 2025-01-07 20:34:24 +00:00
Dialog: Safe activeElement access.
Fixed #9420 - Dialog: Close causes blur of window in IE9 Fixed #8443 - Dialog: "unspecified error" when using ie9 and iframe
This commit is contained in:
parent
ec3cf6725a
commit
2dfe85d3e2
23
ui/jquery.ui.dialog.js
vendored
23
ui/jquery.ui.dialog.js
vendored
@ -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() {
|
||||
|
Loading…
Reference in New Issue
Block a user