Якорь Github Markdown, ссылающийся только на верх страницы - PullRequest
0 голосов
/ 31 октября 2018

Я не уверен, что это место будет уместным, чтобы спросить о проблемах уценки вики-сайта Github. Я удалю это, если это так.

Итак, я пишу вики-страницу для репозитория и пытаюсь добавить якоря. Однако привязка, кажется, только приводит к перезагрузке страницы или к началу страницы. Я почти уверен, что мой синтаксис правильный, но я не знаю, что не так.

У меня есть пример:

Ссылка как: <a name="#dinpanel"></a>

Тогда я получаю к нему доступ: [text to show](myrepositoryweburl#dinpanel) Также, если я просто наберу «myrepositoryweburl # dinpanel» в URL, он все равно будет загружаться в начало страницы. Мне интересно, что происходит с Markdown. Любая помощь будет оценена!

1 Ответ

0 голосов
/ 01 ноября 2018

Используйте заголовок Markdown вместо необработанного HTML-якоря.

Как описано в github / markup , после преобразования Markdown в HTML ...

HTML очищается, агрессивно удаляя вещи, которые могут навредить вам и вашим родственникам, такие как script теги, встроенные стили и class или id атрибуты.

Хотя атрибуты name конкретно не упоминаются, атрибуты id есть, и они выполняют аналогичную функцию. предыдущая версия документа, связанного с санитарным скриптом , который не включает атрибут name в белый список утвержденных атрибутов. Другими словами, дезинфицирующее средство GitHub удаляет ваш атрибут name.

На самом деле, если вы используете функцию view source вашего браузера, я ожидаю, что вы обнаружите, что атрибут name отсутствует в HTML на этой странице. Однако еще не все потеряно. Если вы заметили, шаг 4 включает в себя (выделение добавлено):

HTML пропускается через другие фильтры в html-конвейере, которые добавляют специальные соусы, такие как эмодзи, списки задач, именованных якорей , кеширование CDN для изображений и автосвязь.

Другими словами, каждому заголовку (h1, h2, ... h6) в документе присваивается уникальный id. Поэтому вы можете указать на id, назначенный любому заголовку, и вы получите желаемое поведение.

# Din Panel

...

[link](#din-panel)

Обратите внимание, что для генерации id все символы преобразуются в символы нижнего регистра ASCII, все знаки пунктуации (за исключением дефисов и пробелов) удаляются, а все пробелы заменяются дефисами (-). Наконец, при необходимости, добавляемый номер добавляется в конец, чтобы гарантировать, что каждый id уникален.

Если у вас возникли проблемы с угадыванием автоматически сгенерированного id, вы всегда можете просмотреть сгенерированную страницу на GitHub, а при наведении курсора на заголовок рядом с текстом появится значок привязки. Этот значок будет содержать ссылку на этот конкретный заголовок с правильным id. Или вы можете использовать функцию браузера view source (или инструмент разработчика inspect), чтобы определить id, назначенный заголовку.

...