一部のタグの説明に、次のようなリンクを追加したいと考えています。
<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);
});
});
しかし、私は開発者ではないので、これが良い解決策かどうかはわかりません。
