# Хэши/якоря удаляются из URL на мобильных устройствах. Как это предотвратить?

**URL:** https://meta.discourse.org/t/hash-anchors-are-being-stripped-from-urls-on-mobile-how-to-stop-that/408505
**Category:** Support
**Tags:** mobile
**Created:** [25.Июль.2026 09:10:40 UTC](https://meta.discourse.org/t/hash-anchors-are-being-stripped-from-urls-on-mobile-how-to-stop-that/408505 "2026-07-25T09:10:40Z")
**Posts on this page:** 10
**Page:** 1

<div class="post-metadata">

### Author: ![one1](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/one1/32/493591_2.png) [@one1](https://meta.discourse.org/u/one1)
#### Post date: [25.Июль.2026 09:10:40 UTC](https://meta.discourse.org/t/hash-anchors-are-being-stripped-from-urls-on-mobile-how-to-stop-that/408505/1 "2026-07-25T09:10:40Z")

</div>

Когда я нажимаю на ссылку с якорем на рабочем столе, страница прокручивается к нужному месту. Однако на мобильных устройствах (Android, FF и Chrome) якорь удаляется из URL, поэтому прокрутки к этому месту не происходит.

_ **Что я пытаюсь сделать:** _

У нас есть длинный документ с инструкциями и часто задаваемыми вопросами, в котором необходимо использовать ссылки на заголовки. Поскольку Discourse удаляет параметры `id`, я создал [простой компонент темы](https://github.com/suttacentral/discourse-d-d-scroll-to-data-attributes), который использует пользовательские атрибуты данных в целевом документе и отслеживает якоря в URL, чтобы прокрутить страницу к элементу с соответствующим атрибутом данных.

На рабочем столе это работает!

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

При этом я заметил, что якоря, созданные _компонентом «Содержание»_, _работают_ при открытии в новой вкладке. Они не удаляются из URL, и браузер прокручивает страницу к нужному месту.

Как заставить это работать?

---

<div class="post-metadata">

### Author: ![one1](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/one1/32/493591_2.png) [@one1](https://meta.discourse.org/u/one1)
#### Post date: [25.Июль.2026 10:53:06 UTC](https://meta.discourse.org/t/hash-anchors-are-being-stripped-from-urls-on-mobile-how-to-stop-that/408505/2 "2026-07-25T10:53:06Z")

</div>

Небольшое обновление…

Кто-то предложил использовать вместо этого параметры запроса. Похоже, что на мобильных устройствах они не удаляются. Но удивительно, что на настольных компьютерах они удаляются.

---

<div class="post-metadata">

### Author: ![one1](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/one1/32/493591_2.png) [@one1](https://meta.discourse.org/u/one1)
#### Post date: [26.Июль.2026 10:50:15 UTC](https://meta.discourse.org/t/hash-anchors-are-being-stripped-from-urls-on-mobile-how-to-stop-that/408505/3 "2026-07-26T10:50:15Z")

</div>

Вот несколько связанных сообщений, хотя они и не затрагивают конкретную проблему удаления URL-адресов…

> [@Якоря не работают между постами в теме](https://meta.discourse.org/t/anchors-not-working-across-posts-within-topic/240512/):
>
> Мы пытаемся создать тему в виде своеобразного FAQ/руководства по использованию форума, и для этого хотим разместить несколько длинных постов, каждый из которых будет содержать несколько заголовков, а в первом посте темы составить оглавление, чтобы пользователи могли легко перемещаться между разделами. Оказалось, что реализовать это задуманное сложнее, чем кажется, и, к сожалению, поиск по Meta не сильно помогает. Мы знаем о существовании плагина (auto-ToC или как он там называется), но нам это …

> [@/t/XYZ#anchor не работает на странице XYZ](https://meta.discourse.org/t/t-xyz-anchor-doesnt-work-when-on-the-page-xyz/225101):
>
> Привет! Есть проблема: если пост ссылается на сам себя через короткую ссылку с якорем (/t/id#anchor) и на эту ссылку кликают на той же странице, происходит переход в начало страницы, а не к якорю. Это проще показать на примере: Заголовок 1 [#header-1](#header-1-1) работает при переключении в этой теме [https://meta.discourse.org/t/t-xyz-anchor-doesnt-work-when-on-the-page-xyz/225101#header-1-1](https://meta.discourse.org/t/t-xyz-anchor-doesnt-work-when-on-the-page-xyz/225101#header-1-1) работает при переключении в этой теме и цитировании [https://meta.discourse.org/t/a/225101#header-1-1](https://meta.discourse.org/t/a/225101#header-1-1) работает при пе…

> [@Руководство по включению произвольных атрибутов HTML в белый список?](https://meta.discourse.org/t/guidance-whitelisting-arbitrary-html-attributes/123469):
>
> Похоже, здесь, на Meta, раньше была тема, которая помогала разобраться, как внедрять скрипты, но её удалили. Сначала я не знал, что Markdown удаляет атрибуты id и классы из HTML-разметки в постах, а вскоре выяснил, что скрипты нужно выполнять иначе. Я пытаюсь заставить этот пример с CodePen работать внутри сайта на Discourse, но не знаю, с чего начать, так как обычный способ копирования и вставки, очевидно, не работает: Я понимаю, что добавлять скрипты можно только со стороны администратора…

> [@Разрешение дополнительных HTML-элементов](https://meta.discourse.org/t/allowing-additional-html-elements/203510):
>
> В [Whitelisting HTML tags / attributes](https://meta.discourse.org/t/whitelisting-html-tags-attributes/159653?u=freso) Жоффри ссылается на [https://github.com/discourse/discourse-policy/blob/main/assets/javascripts/lib/discourse-markdown/policy.js.es6#L43](https://github.com/discourse/discourse-policy/blob/main/assets/javascripts/lib/discourse-markdown/policy.js.es6#L43) как на способ включения в белый список определённых HTML-тегов и атрибутов, но я не вижу никаких опций policy в настройках для этого. Это больше не актуально? Или, возможно, я неправильно понимаю, как работает этот код? Нужно ли мне создать плагин (или компонент темы?), чтобы подключиться к этому?

---

<div class="post-metadata">

### Author: ![Lilly](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lilly/32/575047_2.png) [@Lilly](https://meta.discourse.org/u/Lilly)
#### Post date: [26.Июль.2026 12:08:23 UTC](https://meta.discourse.org/t/hash-anchors-are-being-stripped-from-urls-on-mobile-how-to-stop-that/408505/4 "2026-07-26T12:08:23Z")

</div>

я не использую android, поэтому не могу это протестировать, но я много раз использовал ссылки на заголовки, и на моем iphone они работают отлично. мне интересно, почему вы используете id-якоря вместо того, чтобы просто ссылаться на нужный заголовок?

например, работает ли у вас эта ссылка? [cloudflare R2 configuration](https://meta.discourse.org/t/-/148916#p-738234-cloudflare-r2-13)

можете привести пример того, как выглядит ваша якорная ссылка? возможно, я неправильно понимаю, чего вы пытаетесь достичь.

---

<div class="post-metadata">

### Author: ![one1](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/one1/32/493591_2.png) [@one1](https://meta.discourse.org/u/one1)
#### Post date: [26.Июль.2026 12:25:59 UTC](https://meta.discourse.org/t/hash-anchors-are-being-stripped-from-urls-on-mobile-how-to-stop-that/408505/5 "2026-07-26T12:25:59Z")

</div>

> [@Lilly](#):
>
> вместо того чтобы просто ссылаться на нужный заголовок?

Потому что такие ссылки на заголовки крайне ненадёжны. Вот как выглядит та, которую вы привели:

`https://meta.discourse.org/t/-/148916#p-738234-cloudflare-r2-13`

Видите `-13` в конце? Он там потому, что это тринадцатый заголовок. Как только вы добавите новый заголовок выше по тексту, ссылка перестанет работать. И, разумеется, она сломается, если вы измените текст самого заголовка.

Под «сломается» я имею в виду изменения в целевом документе. Насколько я понимаю, такие якоря генерируются динамически при загрузке страницы. Поэтому, если вы используете плагин TOC (содержание), изменение документа не станет проблемой.

В нашем случае это ссылка на FAQ. Поэтому добавление новых вопросов/заголовков — дело нередкое.

Но вы правы в том, что Discourse, кажется, распознаёт паттерн таких якорей и пропускает их. Однако если он не соответствует ожидаемому паттерну, якорь удаляется.

> [@Lilly](#):
>
> можете привести пример того, как выглядит ваш якорь?

Это обычные буквенно-цифровые идентификаторы. Так что, если бы я хотел создать якорь для вашего примера выше, я бы просто использовал `cloudflare-r2`.

---

<div class="post-metadata">

### Author: ![awesomerobot](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/awesomerobot/32/142900_2.png) [@awesomerobot](https://meta.discourse.org/u/awesomerobot)
#### Post date: [27.Июль.2026 15:36:10 UTC](https://meta.discourse.org/t/hash-anchors-are-being-stripped-from-urls-on-mobile-how-to-stop-that/408505/6 "2026-07-27T15:36:10Z")

</div>

Подойдет ли вам что-то вроде этого?

```markdown
<a name="cloudflare-r2"></a>
## Настройка Cloudflare R2

```

Это позволяет разделить якорь и заголовок, и вы можете добавить `#cloudflare-r2` в конец URL-адреса, чтобы создать ссылку на него.

---

<div class="post-metadata">

### Author: ![one1](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/one1/32/493591_2.png) [@one1](https://meta.discourse.org/u/one1)
#### Post date: [27.Июль.2026 15:50:34 UTC](https://meta.discourse.org/t/hash-anchors-are-being-stripped-from-urls-on-mobile-how-to-stop-that/408505/7 "2026-07-27T15:50:34Z")

</div>

В моих тестах Markdown-процессор удаляет атрибуты `name`. Это корень моей первой проблемы.

Однако проблема, которую я поднимаю в этой теме, заключается в том, что даже если бы я смог заставить этот якорь работать, на мобильных устройствах `#cloudflare-r2` всё равно обрезается. На десктопе этого не происходит.

---

<div class="post-metadata">

### Author: ![awesomerobot](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/awesomerobot/32/142900_2.png) [@awesomerobot](https://meta.discourse.org/u/awesomerobot)
#### Post date: [27.Июль.2026 16:02:50 UTC](https://meta.discourse.org/t/hash-anchors-are-being-stripped-from-urls-on-mobile-how-to-stop-that/408505/8 "2026-07-27T16:02:50Z")

</div>

Ах, понял, да, похоже, что редактор форматированного текста удаляет их, а редактор Markdown — нет… В редакторе форматированного текста, думаю, нужно обернуть это в div, чтобы сохранить HTML

```html
 <div><a name="x"></a></div>

```

---

<div class="post-metadata">

### Author: ![one1](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/one1/32/493591_2.png) [@one1](https://meta.discourse.org/u/one1)
#### Post date: [27.Июль.2026 16:05:21 UTC](https://meta.discourse.org/t/hash-anchors-are-being-stripped-from-urls-on-mobile-how-to-stop-that/408505/9 "2026-07-27T16:05:21Z")

</div>

Я уже пробовал это. Текст всё равно выводится как код. Кроме того, я не могу полагаться на то, что кто-то в будущем не будет использовать редактор Markdown.

Я вставил этот HTML выше в визуальный редактор для проверки. Посмотрим…

---

<div class="post-metadata">

### Author: ![one1](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/one1/32/493591_2.png) [@one1](https://meta.discourse.org/u/one1)
#### Post date: [27.Июль.2026 16:13:18 UTC](https://meta.discourse.org/t/hash-anchors-are-being-stripped-from-urls-on-mobile-how-to-stop-that/408505/10 "2026-07-27T16:13:18Z")

</div>

Отлично! Похоже, это сработало в обоих случаях! И даже в обоих редакторах.

Мне нужно провести дополнительные тесты, особенно на мобильных устройствах. Я продолжу работу над этим и сообщу о результатах.

Спасибо!
