Lemmyで0.18.0以降アンカーリンクが使えなくなり、デフォルトでも使える脚注ももちろん使えなくなりました。
で、Issueとかも出してるんですが対処されないので(自分ではちょっと無理・・・)無理やりなんとかします。
やることは簡単、Lemmy UIのカスタムヘッダーを使って、popstateを無理やり解除してからそのリンク先にスクロールするという手法です。
Lemmyの特性上ページの遷移時にloadイベントが発生しないのでリンクにリスナーをっていう感じではなくclickにしてます。
LEMMY_UI_CUSTOM_HTML_HEADER: >
<script>
window.addEventListener('click', e => {
const link = e.target.getAttribute('href');
if (/^#/.test(link)) {
e.preventDefault();
escapeLink = "#" + CSS.escape(link.slice(1))
const toTarget = document.querySelector(escapeLink);
if (toTarget) {
if (toTarget.scrollIntoView) {
toTarget.scrollIntoView({ behavior: "smooth", block: "start", inline: "nearest" });
} else {
let rect = toTarget.getBoundingClientRect();
window.scrollTo(rect.x, rect.y)
}
}
}
});
</script>
以下のサイトでまったく同じ問題に直面している人のやつを参考にしました。(Lemmyではないけど)
https://krasimirtsonev.com/blog/article/anchor-links-and-popstate>
これの成果はここでためせます。
https://lm.korako.me/post/8420