Я полагаю, что столкнулся с потенциальной проблемой при использовании функции автоматически сгенерированного оглавления в DiscoTOC:
При использовании заголовков разных уровней на языках, отличных от английского, например на китайском, кажется, что data-d-toc идентификаторы в автоматически сгенерированном оглавлении захватывают только числовые цифры и английские буквы из заголовков. Такая ситуация может легко привести к созданию идентичных идентификаторов, что, в свою очередь, вызывает некорректные ссылки в правой полосе прокрутки.
На изображении выше, если порядковые номера в заголовках оба равны 5, результирующие data-d-toc идентификаторы будут оба toc-h2-5. Следовательно, это приведет к тому, что две различные ссылки будут ошибочно указывать на один и тот же раздел.
Однако, изменив порядковые номера на 1.5 и 2.5, data-d-toc идентификаторы станут различаться (toc-h2-15 и toc-h2-25), что эффективно обеспечит точные и корректные ссылки.
Чтобы обеспечить точную работу ссылок в полосе прокрутки, целесообразно ли использовать заголовки на английском языке?
Кроме того, для языков, таких как китайский, будет ли наиболее жизнеспособным решением включение многоуровневых порядковых номеров (например, 3.5, 3.6.5, 4.2.5.6) в заголовки?
Хотя мой вариант работает, он не идеален, и я просто ленюсь дорабатывать код.
Очевидно, лучшее решение — использовать base64 для генерации data-d-toc и добавить уникальный идентификатор, чтобы избежать возможных дубликатов заголовков.
В данный момент у меня нет прав на внесение таких изменений в корпоративный форум, но я благодарен за ваш ответ!
Кроме того, хотел бы спросить: планируют ли официальные разработчики добавить поддержку других нелатинских языков для этой функции автоматически генерируемого оглавления в будущих версиях плагина DiscoTOC? @Lilly@awesomerobot
По правде говоря, они учли не латинские языки, используя метод slugify(h.textContent). Я подозреваю, что эта функция slugify была разработана в соответствии с методом генерации ссылок (slug generation method) форума. Когда он не находится в режиме ‘encode’, возникают проблемы, хотя я лично не проверял эту гипотезу.
В предыдущих случаях, когда мы использовали официальную версию компонента темы, метод генерации ссылок нашего форума был установлен в ‘none’, что приводило к аналогичным проблемам. Поэтому могу ли я предложить вам попробовать изменить настройку на ‘encode’?
Кроме того, учитывая скорость исправлений со стороны разработчиков… В соседнем компоненте проблема, которую я поднял в прошлом году, до сих пор без ответа. Я рекомендую вам запросить использование моей форк-версии.
Попытался изменить эту настройку, но описанные выше проблемы всё ещё сохраняются. ID data-d-tocсчитывает только цифры и буквы, и по-прежнему встречаются дубликаты идентификаторов оглавления. Кажется, дело не в этом?
Спрошу у своего руководителя, спасибо за ответ~