diff --git a/dialog-polyfill.js b/dialog-polyfill.js index de96479..d75ecd0 100644 --- a/dialog-polyfill.js +++ b/dialog-polyfill.js @@ -529,6 +529,8 @@ dialogPolyfill.DialogManager.prototype.handleFocus_ = function(event) { if (this.containedByTopDialog_(event.target)) { return; } + if (document.activeElement === document.documentElement) { return; } + event.preventDefault(); event.stopPropagation(); safeBlur(/** @type {Element} */ (event.target)); @@ -539,9 +541,11 @@ var dialog = dpi.dialog; var position = dialog.compareDocumentPosition(event.target); if (position & Node.DOCUMENT_POSITION_PRECEDING) { - if (this.forwardTab_) { // forward + if (this.forwardTab_) { + // forward dpi.focus_(); - } else { // backwards + } else if (event.target !== document.documentElement) { + // backwards if we're not already focused on document.documentElement.focus(); } } else { diff --git a/tests/modal-dialog.html b/tests/modal-dialog.html index 20a6562..65db5be 100644 --- a/tests/modal-dialog.html +++ b/tests/modal-dialog.html @@ -1,11 +1,17 @@ - +