mirror of
https://github.com/go-gitea/gitea
synced 2025-07-05 01:57:20 +00:00
Fix footnote jump behavior on the issue page. (#34621)
Close #34511 Close #34590 Add comment ID to the footnote item's id attribute to ensure uniqueness. --------- Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
@ -15,6 +15,14 @@ func isAnchorIDUserContent(s string) bool {
|
||||
return strings.HasPrefix(s, "user-content-") || strings.Contains(s, ":user-content-")
|
||||
}
|
||||
|
||||
func isAnchorIDFootnote(s string) bool {
|
||||
return strings.HasPrefix(s, "fnref:user-content-") || strings.HasPrefix(s, "fn:user-content-")
|
||||
}
|
||||
|
||||
func isAnchorHrefFootnote(s string) bool {
|
||||
return strings.HasPrefix(s, "#fnref:user-content-") || strings.HasPrefix(s, "#fn:user-content-")
|
||||
}
|
||||
|
||||
func processNodeAttrID(node *html.Node) {
|
||||
// Add user-content- to IDs and "#" links if they don't already have them,
|
||||
// and convert the link href to a relative link to the host root
|
||||
@ -27,6 +35,18 @@ func processNodeAttrID(node *html.Node) {
|
||||
}
|
||||
}
|
||||
|
||||
func processFootnoteNode(ctx *RenderContext, node *html.Node) {
|
||||
for idx, attr := range node.Attr {
|
||||
if (attr.Key == "id" && isAnchorIDFootnote(attr.Val)) ||
|
||||
(attr.Key == "href" && isAnchorHrefFootnote(attr.Val)) {
|
||||
if footnoteContextID := ctx.RenderOptions.Metas["footnoteContextId"]; footnoteContextID != "" {
|
||||
node.Attr[idx].Val = attr.Val + "-" + footnoteContextID
|
||||
}
|
||||
continue
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func processNodeA(ctx *RenderContext, node *html.Node) {
|
||||
for idx, attr := range node.Attr {
|
||||
if attr.Key == "href" {
|
||||
|
Reference in New Issue
Block a user