From 5e872eca1c4efcb1b8311f1517dc2b328d2ef6cb Mon Sep 17 00:00:00 2001 From: YuanShiJiLoong <2450829984@qq.com> Date: Sun, 22 Feb 2026 21:06:05 +0900 Subject: [PATCH] fix: prevent native link drag on GitHub button for smooth custom drag --- app/page.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/app/page.js b/app/page.js index 5f584da..d9c733c 100644 --- a/app/page.js +++ b/app/page.js @@ -324,12 +324,13 @@ export default function Home() { el.style.right = `${r}px`; el.style.bottom = `${b}px`; }; - const onUp = (ev) => { + const onUp = () => { document.removeEventListener('pointermove', onMove); document.removeEventListener('pointerup', onUp); if (dragging) { - ev.preventDefault(); + el.dataset.justDragged = '1'; localStorage.setItem(storageKey, JSON.stringify({ right: parseInt(el.style.right), bottom: parseInt(el.style.bottom) })); + setTimeout(() => delete el.dataset.justDragged, 0); } }; document.addEventListener('pointermove', onMove); @@ -359,9 +360,11 @@ export default function Home() { target="_blank" rel="noopener noreferrer" className="btn btn-secondary btn-icon" + draggable={false} + onDragStart={(e) => e.preventDefault()} style={{ ...commonStyle, display: 'flex', alignItems: 'center', justifyContent: 'center', textDecoration: 'none', color: 'inherit' }} onPointerDown={makeDraggable} - onClick={(e) => { if (e.defaultPrevented) return; }} + onClick={(e) => { if (e.currentTarget.dataset.justDragged) e.preventDefault(); }} onMouseEnter={(e) => e.currentTarget.style.opacity = '1'} onMouseLeave={(e) => e.currentTarget.style.opacity = '0.8'} title="GitHub" @@ -379,7 +382,7 @@ export default function Home() { className="btn btn-secondary btn-icon" style={commonStyle} onPointerDown={makeDraggable} - onClick={(e) => { if (!e.defaultPrevented) setShowHelp(true); }} + onClick={(e) => { if (!e.currentTarget.dataset.justDragged) setShowHelp(true); }} onMouseEnter={(e) => e.currentTarget.style.opacity = '1'} onMouseLeave={(e) => e.currentTarget.style.opacity = '0.8'} title={t('page.helpAndGuide')}