В описаниях некоторых из моих тегов я хочу добавить ссылку, например такую:
<a href="https://store.sgiant.me" target="_blank">Нажмите здесь</a>, чтобы перейти в официальный магазин Sir Giant.
Когда я впервые сохраняю это, всё работает, и ссылка открывается в новом окне.
Однако при обновлении страницы она перестает работать, и при проверке кода она выглядит так:
<a href="https://store.sgiant.me">Нажмите здесь</a>, чтобы перейти в официальный магазин Sir Giant.
У меня уже включена опция «Открывать внешние ссылки в новой вкладке», но, похоже, это не влияет на данный случай, когда я добавляю HTML-код.
ChatGPT предложил создать компонент с вкладкой JS, содержащей следующий код:
import { apiInitializer } from "discourse/lib/api";
export default apiInitializer((api) => {
function processTagLinks() {
document.querySelectorAll('.tag-title-contents a[href^="http"]').forEach(link => {
if (!link.href.includes(window.location.hostname) && !link.hasAttribute('data-processed')) {
link.setAttribute('target', '_blank');
link.setAttribute('rel', 'noopener noreferrer');
link.setAttribute('data-processed', 'true');
}
});
}
// Обработать сразу
processTagLinks();
// Отслеживать изменения в DOM
const observer = new MutationObserver(() => {
processTagLinks();
});
observer.observe(document.body, {
childList: true,
subtree: true
});
// Также запускать при изменении страницы
api.onPageChange(() => {
setTimeout(processTagLinks, 100);
});
});
Но я не разработчик, поэтому не знаю, является ли это хорошим решением?
