Bei einigen meiner Tag-Beschreibungen möchte ich einen Link hinzufügen, wie diesen:
<a href="https://store.sgiant.me" target="_blank">Hier klicken</a>, um den offiziellen Sir Giant Store zu besuchen.
Wenn ich ihn zum ersten Mal speichere, funktioniert er und öffnet sich in einem neuen Fenster.
Wenn ich die Seite aktualisiere, funktioniert er nicht mehr und wenn ich den Code überprüfe, wird er zu:
<a href="https://store.sgiant.me">Hier klicken</a>, um den offiziellen Sir Giant Store zu besuchen.
Ich habe die Option, externe Links in einem neuen Tab zu öffnen, bereits auf “Ja” gesetzt, aber das scheint diesen speziellen Fall, in dem ich HTML-Code hinzufüge, nicht zu beeinflussen.
ChatGPT schlug die Erstellung einer Komponente mit dem JS-Tab vor, die Folgendes enthält:
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');
}
});
}
// Sofort verarbeiten
processTagLinks();
// Auf DOM-Änderungen achten
const observer = new MutationObserver(() => {
processTagLinks();
});
observer.observe(document.body, {
childList: true,
subtree: true
});
// Auch bei Seitenwechseln ausführen
api.onPageChange(() => {
setTimeout(processTagLinks, 100);
});
});
Aber ich bin kein Entwickler und weiß nicht, ob das eine gute Lösung ist oder nicht.
