みやもとメモ

「Notion」「資格」「ブログカスタマイズ」「Microsoft To Do」「Chrome拡張機能」などについて書いていきます。

目次
目次

【はてなブログ-カスタマイズ】外部リンクを別タブで開くようにしてみる(JavaScript対応)

この記事をシェアする


せっかくHTML5の資格を取得したので、JavaScriptを追加して外部リンクを別タブで開く対応をしてみようと思います。
HTML5の資格、”HTML”と言いつつレベル2はほぼJavaScriptなのです。

ちなみに今回の対応、ネットで検索すると既にいくつか記事がヒットします。
なのでそれらの記事からのコピペ対応でもおそらく対応できたのですが、せっかくなので自力でJavaScriptを書いてみました。

なお、HTML5の合格体験記は投稿済みです。こちらも良ければぜひ。
JavaScriptはどちらかというとレベル2の領域です。

ではどんな対応をしたか書いていきます。

リンクについて

まず、はてなブログにはリンクが3種類あり、

  • URL:別タブで開かない
  • タイトル:別タブで開かない
  • 埋め込み:別タブで開く

という仕様のようです。

3種類のリンク

なので今回の対応対象はURL・タイトルの2つになります。
埋め込みは元々別タブで開くようなので挙動は変えません。

「全部、埋め込みにすればいいんじゃない?」という話ではあるのですが、そうするとちょっとゴチャつきそうだなーという感じがしており。
リンク割とたくさん貼るので使い分けたいな。でも外部リンクは別タブにしたいな。という謎のこだわりが今回の記事となります。

対応前後の挙動

まずは手っ取り早く、対応前後の挙動を載せます。

対応前(困っている挙動)

「タイトル」が別タブで開いてくれない。。(「URL」も同様の挙動。)

別タブで開いてくれない。。

対応後

JavaScirpt適用後、「タイトル」が別タブで開くようになりました。(「URL」も同様の挙動。)

「タイトル」が別タブで開いた

補足

上記の挙動は外部リンクに関してです。
内部リンク(自ブログ内)に関しては別タブで開くと個人的にちょっとウザい。。
なので別タブで開かないようにしています。

内部リンク(自ブログ内)は別タブで開かないようにしている

JavaScript

今回適用したJavaScriptはこちらです。
リンクの中で「外部サイトだけ」別タブで開くようにしたJavaScriptです。

<script>
window.addEventListener("load", function() {
    const aTags = document.querySelectorAll("a[href^='http']");
    aTags.forEach((aTag) => {
        if (aTag.href.indexOf(location.hostname) === -1) {
            aTag.setAttribute("target", "_blank");
        }
    });
});
</script>

JavaScriptの適用手順

ちょっとした挙動の変化なので今回のJavaScriptを適用したい人はおそらくいないとは思いますが、一応適用手順を載せておきます。


STEP
ヘッダーの右上あたりにあるところをクリックして「デザイン」をクリック
STEP
「カスタマイズ」→「フッタ」→「記述領域」をクリック
STEP
上述のJavaScriptをコピペする
※既にJavaScriptを埋め込んでいる人はそれを消さないよう注意してください
STEP
「変更を保存する」をクリック
STEP
挙動が変わったか確認する
想定の挙動になっていない方は
手順が間違っているか、他にもCSSJavaScriptを埋め込んでいてその影響か、、などなど原因は色々考えられます。

注意事項

はてなブログで適用したものです。
はてなブログ以外では試してないので、うまく動かない可能性があります。

私のPC・スマホのブラウザでは想定通りに動きましたが、他にもCSSJavaScriptを埋め込んでいる人はうまく動かない可能性があります。
もし今回記載のJavaScriptを適用しようとしている方はその辺りご了承ください。

おわりに

ということで、JavaScriptを追加して外部リンクを別タブで開く対応をしてみました。

もしかしたらなにかしら問題が発生してしれっと元に戻してるかもしれません。その際は察してください。

(追記)CSSによるブログカスタマイズの記事もあります。こちらも良ければぜひ。
miya-moto-memo.hatenablog.commiya-moto-memo.hatenablog.com

関連記事

JavaScriptに関連したブログカスタマイズ記事は他にも書いています。
気になる記事があればぜひ。

TOPへ戻る HOMEへ