Skip to content

bugfix: 将a标签替换为button并移除href="#"和事件阻止#910

Merged
imaegoo merged 1 commit into
twikoojs:mainfrom
emumus:bugfix/fix-swup-scroll-to-top
Mar 31, 2026
Merged

bugfix: 将a标签替换为button并移除href="#"和事件阻止#910
imaegoo merged 1 commit into
twikoojs:mainfrom
emumus:bugfix/fix-swup-scroll-to-top

Conversation

@emumus

@emumus emumus commented Mar 30, 2026

Copy link
Copy Markdown
Contributor

修改

  • 将TkAdmin、TkComment和TkAction组件中的a标签替换为更语义化的button标签。

  • 移除相关事件处理函数中不必要的preventDefault调用

解决了什么bug

  • 已经在vitepress环境测试,点击行为正常符合预期,且无需再添加class="vp-raw"

  • 已修改范围内组件的样式不受影响。

  • 理论上不会再在基于swup的主题中产生异常滚动。

相关Issue

#620 ,该issue中首次出现了href="#"代码及其相关的preventDefault用于解决vitepress中的问题。

#721 ,该issue提出了在基于swup的主题中异常滚动至顶部,且多人发现移除href="#"是有效的解决方案。顺带一提,这包括我自己。

swup的跳转似乎是其模拟的结果,swup会提取链接的哈希并模拟原生行为进行跳转。当初通过href="#"解决vitepress的方案在这里产生了不可避免的副作用。

#832Ercilan提出了使用button的方案,vitepress的源代码显示使用button可以完全规避跳转问题,且不会触发swup的哈希提取。

自行全局替换href="#"是一种难以持续的方案,很多基于swup的主题(尤其是自使用swup的saicaca/fuwari为主的分支)如matsuzaka-yuki/MizukiCuteLeaf/Firefly等等都在用不同方式为此付出额外的时间和代码,我希望能在这里彻底解决它。

- 将TkAdmin、TkComment和TkAction组件中的a标签替换为更语义化的button标签。

- 移除相关事件处理函数中不必要的preventDefault调用
@imaegoo imaegoo merged commit 1d3a33a into twikoojs:main Mar 31, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants