Github Markdown 锚只链接到页面顶部

Vin*_*nci 3 anchor markdown github

我不确定这个地方是否适合询问 Github wiki 降价问题。如果是这样,我会删除它。

所以,我正在为存储库编写一个 wiki 页面,并且我一直在尝试添加锚点。但是,锚点似乎只会导致重新加载页面,或者导致页面顶部。我很确定我的语法是正确的,但我不知道出了什么问题。

我有这样的例子:

链接为: <a name="#dinpanel"></a>

然后我访问它: [text to show](myrepositoryweburl#dinpanel) 另外,如果我只是在 URL 中输入“myrepositoryweburl#dinpanel”,它仍然会加载到页面顶部。我想知道 Markdown 发生了什么。任何帮助,将不胜感激!

Way*_*lan 6

使用 Markdown 标头而不是原始 HTML 锚点。

github/markup 中所述,在 Markdown 转换为 HTML 之后......

HTML 已被清理,积极删除可能伤害您和您的亲属的东西——例如script标签、内联样式和/classid属性。

虽然name没有特别提到id属性,但属性是并且它们具有类似的功能。一个以前版本的文件链接到卫生脚本,其中不包括name在核准属性的白名单属性。换句话说,GitHub 的 sanitizer 正在删除您的name属性。

事实上,如果您使用浏览器的view source功能,我希望您会发现name该页面的 HTML 中缺少该属性。然而,并没有失去一切。如果您注意到,第 4 步包括(强调):

HTML 通过 html-pipeline 中的其他过滤器传递,这些过滤器添加了特殊的调味料,例如表情符号、任务列表、命名锚点、图像的 CDN 缓存和自动链接。

换句话说,文档中的每个标题 ( h1, h2,... h6) 都被分配了一个唯一的id. 因此,您可以指向id分配给任何标头,您将获得所需的行为。

# Din Panel

...

[link](#din-panel)
Run Code Online (Sandbox Code Playgroud)

请注意,要生成id,所有字符都转换为小写 ASCII 字符,删除所有标点符号(除了连字符和空格),所有空格都替换为连字符 ( -)。最后,如果需要,在末尾附加一个递增的数字以确保每个id都是唯一的。

如果您无法正确猜测自动生成的id,您可以随时在 GitHub 上查看生成的页面,当将鼠标悬停在标题上时,文本旁边会出现一个锚点图标。该图标将包含指向该特定标题的链接,并带有正确的id. 或者您可以使用浏览器的view source功能(或inspect开发人员工具)来确定id分配给标题的内容。