外部リンクを自動で新規タブで開くUserScript

ブラウザ上でリンクをクリックした時に起こることといえば、そのタブでページが遷移するか新しいタブでクリックしたリンクが開かれるかだと思う。自分の中で「これは新規タブで開かれるだろう」と予想したリンクがそのままそのタブで遷移することが結構あって、そういう時はESCとかで読み込みを中止して新規タブで開き直すようにしたりしてたんだけど、これが結構めんどくさい。自分が新規タブで開かれると予想するリンクは大体外部リンクなので、UserScriptを書いて外部ドメインのリンクは基本的に全部新規タブで開くようにした。

// ==UserScript==
// @match *://*/*
// ==/UserScript==

(function (anchors) {
  for (var i = 0, l = anchors.length; i < l; i++) {
    if (location.host !== anchors[i].host) {
      anchors[i].setAttribute("target", "_blank");
    }
  }
})(document.querySelectorAll("a"));

仕組みとしては、querySelectorAllでa要素を拾ってきて、そのhref属性が開いているページとは違うドメインだったらtarget="_blank"をつけるという感じ。