LoginSignup
0
0

Markdownのリンクを別タブで開くようにする

Last updated at Posted at 2024-06-14

Markdown で書いたドキュメントのリンクから別タブで開くようにするための処理を書いていきます。

Markdown を表示する

index.html に JavaScript を使って Markdown を表示します。

<!DOCTYPE html>
<html lang="ja">
  <head>
    <!-- head -->
  </head>
  <body>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/marked/0.3.2/marked.min.js"></script>
    <script>
      const markdown = `
## Markdown ドキュメント

### リンク一覧

[私のQiita](https://qiita.com/diskszk)  
[私のGitHub](https://github.com/diskszk)
`;

      (function () {
        const div = document.createElement("div");
        div.innerHTML = marked(markdown);
        document.body.appendChild(div);
      })();
    </script>
  </body>
</html>

index.html ファイルをブラウザで開くと Markdown を表示していることが確認できます。

screenshot 3.png

developer tool で確認すると、当然 href 属性しか設定されていません。

image.png

aタグに属性を追加する

リンクをクリックした時に別タブで開かせたいので、 a タグに target="_black"rel="noopener noreferrer の属性を追加する処理を書いていきます。

<!DOCTYPE html>
<html lang="ja">
  <head>
    <!-- head -->
  </head>
  <body>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/marked/0.3.2/marked.min.js"></script>
    <script>
      const markdown = `
    <!-- markdown の内容 -->
`;

      (function () {
        const div = document.createElement("div");
        div.innerHTML = marked(markdown);
        document.body.appendChild(div);
      })();

+      document.addEventListener("DOMContentLoaded", function () {
+        const links = document.querySelectorAll("a");
+        links.forEach(function (link) {
+          link.setAttribute("target", "blank");
+          link.setAttribute("rel", "noopener noreferrer");
+        });
+      });
    </script>
  </body>
</html>

image.png

これでリンクをクリックした時に別タブで開くようになりました。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0