[Redmine] 外部サイトへのリンクを新規ウィンドウで開く

RedmineのチケットやWikiなどで外部サイト(Redmineとは異なるドメイン)へのリンクの場合、新しいウィンドウで開く設定を行います。

今回はView Customizeプラグインを利用して実装します。インストール方法などは以下の記事をご覧ください。 blog.katsubemakito.net

設定する

Redmine4.1で動作確認をしています。

パス・プロジェクトのパターン、挿入位置、種別

「パスのパターン」
.*
「プロジェクトのパターン」
全プロジェクに反映する場合は空欄に。
「挿入位置」
全ページのヘッダ
「種別」
JavaScript

コード

コード欄には以下のようなJavaScriptを入力します。

$(document).ready(function(){
  $("a.external").each(function(){
    // 別窓で開く
    $(this).attr("target", "_blank")

    // noopenerを追加する
    const rel = $(this).attr("rel")
    if( rel === undefined ){
      $(this).attr("rel", "noopener")
    }
    else{
      $(this).attr("rel", ["noopener", rel].join(" "))
    }
  });
})

Redmineでは外部へのリンクは自動的に<a class="external">といったようにexternalクラスが付与されているので、これを利用するのが楽チンです。最終的に以下のように変換されます。

<!-- Befor -->
<a hreh="https://google.com" class="external">Google</a>

<!-- After -->
<a hreh="https://google.com" class="external" target="_blank" rel="noopener">Google</a>

noopenerは詳細は端折りますがフィッシング対策などを目的として付与しています。またウィンドがガンガン立ち上がるのが嫌な場合は_blankの箇所をsubwindowなど適当な文字列に変更してください。

またREFERERを送出しない設定も同時にしておくと良いかもしれませんね。 blog.katsubemakito.net