diff --git a/src/layouts/modules/global-tab/index.vue b/src/layouts/modules/global-tab/index.vue index 0be378e8..5e3c92dc 100644 --- a/src/layouts/modules/global-tab/index.vue +++ b/src/layouts/modules/global-tab/index.vue @@ -27,6 +27,7 @@ const isPCFlag = isPC(); const TAB_DATA_ID = 'data-tab-id'; const MIDDLE_MOUSE_BUTTON = 1; +const RIGHT_MOUSE_BUTTON = 2; type TabNamedNodeMap = NamedNodeMap & { [TAB_DATA_ID]: Attr; @@ -99,6 +100,12 @@ function handleMousedown(e: MouseEvent, tab: App.Global.Tab) { handleCloseTab(tab); } +function switchTab(e: MouseEvent, tab: App.Global.Tab) { + if ([MIDDLE_MOUSE_BUTTON, RIGHT_MOUSE_BUTTON].includes(e.button)) return; + + tabStore.switchRouteByTab(tab); +} + async function refresh() { appStore.reloadPage(500); } @@ -197,7 +204,7 @@ init(); :active="tab.id === tabStore.activeTabId" :active-color="themeStore.themeColor" :closable="!tabStore.isTabRetain(tab.id)" - @pointerdown="tabStore.switchRouteByTab(tab)" + @pointerdown="switchTab($event, tab)" @mousedown="handleMousedown($event, tab)" @close="handleCloseTab(tab)" @contextmenu="handleContextMenu($event, tab.id)"