diff --git a/src/_locales/cmn-CN.yml b/src/_locales/cmn-CN.yml index 9ce38418..cc65b678 100644 --- a/src/_locales/cmn-CN.yml +++ b/src/_locales/cmn-CN.yml @@ -49,6 +49,7 @@ common: iframe_drawer: open_in_new_tab: 在新标签页打开 close: 关闭 + press_esc_again_to_close: 再次按下 Esc 关闭 settings: title: 设置 diff --git a/src/_locales/cmn-TW.yml b/src/_locales/cmn-TW.yml index 9a61eff2..15fc09e4 100644 --- a/src/_locales/cmn-TW.yml +++ b/src/_locales/cmn-TW.yml @@ -49,6 +49,7 @@ common: iframe_drawer: open_in_new_tab: 在新索引標籤開啟連結 close: 關閉 + press_esc_again_to_close: 再次按下 Esc 關閉 settings: title: 設定 diff --git a/src/_locales/en.yml b/src/_locales/en.yml index ec394414..33fe2ff4 100644 --- a/src/_locales/en.yml +++ b/src/_locales/en.yml @@ -49,6 +49,7 @@ common: iframe_drawer: open_in_new_tab: Open in new tab close: Close + press_esc_again_to_close: Press Esc again to close settings: title: Settings diff --git a/src/_locales/jyut.yml b/src/_locales/jyut.yml index 44d546ac..88ad5c6a 100644 --- a/src/_locales/jyut.yml +++ b/src/_locales/jyut.yml @@ -49,6 +49,7 @@ common: iframe_drawer: open_in_new_tab: 喺新嘅分頁度打開連結 close: 關閉 + press_esc_again_to_close: 撳多次 Esc 關閉 settings: title: 設定 diff --git a/src/components/IframeDrawer.vue b/src/components/IframeDrawer.vue index 90fcf8c1..ef1516f1 100644 --- a/src/components/IframeDrawer.vue +++ b/src/components/IframeDrawer.vue @@ -27,6 +27,8 @@ nextTick(() => { onMounted(async () => { history.pushState(null, '', props.url) show.value = true + await nextTick() + iframeRef.value?.focus() }) onBeforeUnmount(() => { @@ -91,9 +93,25 @@ function handleOpenInNewTab() { window.open(props.url, '_blank') } -onKeyStroke('Escape', (e: KeyboardEvent) => { - e.preventDefault() - handleClose() +const isEscPressed = ref(false) +const escPressedTimer = ref(null) + +nextTick(() => { + onKeyStroke('Escape', (e: KeyboardEvent) => { + e.preventDefault() + if (isEscPressed.value) { + handleClose() + } + else { + isEscPressed.value = true + if (escPressedTimer.value) { + clearTimeout(escPressedTimer.value) + } + escPressedTimer.value = setTimeout(() => { + isEscPressed.value = false + }, 1300) + } + }, { target: iframeRef.value?.contentWindow }) }) // const keys = useMagicKeys() @@ -101,7 +119,6 @@ onKeyStroke('Escape', (e: KeyboardEvent) => { // watch(() => ctrlAltT, (value) => { // if (value) { -// console.log('ctrlAltT', value) // handleOpenInNewTab() // } // }) @@ -146,6 +163,7 @@ onKeyStroke('Escape', (e: KeyboardEvent) => { -->