タグの説明で target="_blank" が削除されています

一部のタグの説明に、次のようなリンクを追加したいと考えています。

<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);
  });
});

しかし、私は開発者ではないので、これが良い解決策かどうかはわかりません。

デフォルトの他の外部リンクを新しいタブで開くを調整したいだけかもしれません

しかし、それはまさに私が「外部リンクを新規タブで開く」というオプションを「はい」に設定しているという意味です。

image

これは、説明で使用している生のHTMLには影響しません。そのため、代替手段を見つける必要がありました。

「いいね!」 1