diff --git a/packages/message/src/main.vue b/packages/message/src/main.vue index a29d05e5..882b76f4 100644 --- a/packages/message/src/main.vue +++ b/packages/message/src/main.vue @@ -87,7 +87,18 @@ if (typeof this.onClose === 'function') { this.onClose(this); } - this.originFocus && this.originFocus.focus(); // 键盘焦点回归 + if (!this.originFocus || !this.originFocus.getBoundingClientRect) return; + + // restore keyboard focus + const { top, left, bottom, right } = this.originFocus.getBoundingClientRect(); + const viewportHeight = window.innerHeight || document.documentElement.clientHeight; + const viewportWidth = window.innerWidth || document.documentElement.clientWidth; + if (top >= 0 && + left >= 0 && + bottom <= viewportHeight && + right <= viewportWidth) { + this.originFocus.focus(); + } }, clearTimer() {