En algunas descripciones de mis etiquetas quiero añadir un enlace como este:
<a href="https://store.sgiant.me" target="_blank">Haz clic aquí</a> para visitar la tienda oficial de Sir Giant.
Cuando lo guardo por primera vez, funciona y se abre en una nueva ventana.
Cuando actualizo la página, ya no funciona y, si reviso el código, se convierte en:
<a href="https://store.sgiant.me">Haz clic aquí</a> para visitar la tienda oficial de Sir Giant.
Ya tengo activada la opción de abrir enlaces externos en una nueva pestaña, pero parece que esto no afecta a este caso particular en el que estoy añadiendo código HTML.
ChatGPT sugirió la creación de un componente con la pestaña JS que contiene:
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');
}
});
}
// Procesa inmediatamente
processTagLinks();
// Observa los cambios en el DOM
const observer = new MutationObserver(() => {
processTagLinks();
});
observer.observe(document.body, {
childList: true,
subtree: true
});
// También se ejecuta en cambios de página
api.onPageChange(() => {
setTimeout(processTagLinks, 100);
});
});
Pero no soy desarrollador y no sé si es una buena solución o no.
