diff --git a/plugins/scroll-to-top.ts b/plugins/scroll-to-top.ts index 448d2420..91db4caa 100644 --- a/plugins/scroll-to-top.ts +++ b/plugins/scroll-to-top.ts @@ -1,7 +1,14 @@ -export default defineNuxtPlugin(() => { +export default defineNuxtPlugin((nuxt) => { return { provide: { - scrollToTop: () => { + scrollToTop: (evt?: MouseEvent | KeyboardEvent) => { + const path = evt?.composedPath?.() as HTMLElement[] + const el = path?.find(el => el.tagName?.toUpperCase() === 'A') as HTMLAnchorElement + if (el && el.href) { + if (nuxt.$preventScrollToTop(new URL(el.href, import.meta.url).pathname)) + return + } + window.scrollTo({ top: 0, left: 0, behavior: 'smooth' }) }, },