素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: すかいぷ:javascripter_  か javascripter あっと tsukkun.net skypeのほうがいいです

外部リンクにtarget="_blank"をつけるGreasemonkeyスクリプト

特長:

  1. フレームサイトとかでもくずれない。
  2. 内部リンクにtarget="_blank"ってなっていても勝手に削除する。
  3. 相対リンクでも絶対リンクでもうまく動く。
  4. AutoPagerize対応。
// ==UserScript==
// @name           addTarget
// @namespace      http://d.hatena.ne.jp/javascripter/
// @include        http*
// ==/UserScript==

function addTarget(docs){
  Array.forEach(docs.getElementsByTagName('a'),
    function(link){
      link.target!='_blank'&&link.target!='_self'&&
        link.removeAttribute('target');
      link.target||link.host==location.host&&link.protocol==location.protocol||
        link.setAttribute('target','_blank');
    }
  );
}
addTarget(document.body);
window.AutoPagerize&&
  window.AutoPagerize.addFilter(
      function(docs){docs.forEach(addTarget)}
    );

ifつかわないで&&とか||とか使っているのは、コードを胡散臭くするため。