import { onBeforeUnmount, onMounted } from 'vue'; const jumperSelector = '.t-pagination__jump input'; function labelPaginationJumpers(root: ParentNode) { root.querySelectorAll(jumperSelector).forEach((input) => { if (!input.getAttribute('aria-label')) input.setAttribute('aria-label', '跳转页码'); }); } export function useTDesignAccessibility() { let observer: MutationObserver | undefined; onMounted(() => { labelPaginationJumpers(document); observer = new MutationObserver((records) => { records.forEach((record) => { record.addedNodes.forEach((node) => { if (node instanceof Element) { if (node.matches(jumperSelector)) node.setAttribute('aria-label', '跳转页码'); labelPaginationJumpers(node); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); }); onBeforeUnmount(() => observer?.disconnect()); }