target=_blank を使わないで新しいウィンドウでリンクを開く
リンクをクリックすると、新しいウィンドウでリンク先を表示させるには、target="_blank"が知られているが、
「新しいウィンドウを開くかどうかはユーザーが決めるのが望ましい」という考えから、この書き方はXHTMLに準拠していない。
とはいえ、作り手としては、せっかくだから、リンク元サイトは開いたまま、リンク先を新しいウィンドウで開きたい、と思うものだ。
そこで、target=_blank を使わないで新しいウィンドウでリンクを開く方法を。
JavaScriptを使った単純な回避法
<head>~</head>内に以下を追加
<script type="text/javascript">
<!--
window.onload= function() {
var a_all = document.getElementsByName("outside");
for (i = 0; i < a_all.length; i++) {
a_all[i].target = "_blank";
}
};
// -->
</script>
リンクの記述
<a name="outside" href="リンク先URL">アンカーテキスト</a>
ただ、name属性もいずれ滅びるという事なので、あまりオススメはできない。
rel="external"で新しいウィンドウでリンクを開く
以下を「 external.js 」という名前で保存し、サーバーにアップロードする
function externalLinks() {
if (!document.getElementsByTagName) return;
var anchors = document.getElementsByTagName("a");
for (var i=0; i<anchors.length; i++) {
var anchor = anchors[i];
if (anchor.getAttribute("href") &&
((anchor.getAttribute("rel") == "external nofollow") || (anchor.getAttribute("rel") == "nofollow external") || (anchor.getAttribute("rel") == "external")))
anchor.target = "_blank";
}
}
window.onload = externalLinks;
<head>~</head>内に以下の1行を追加(保存先のURLを入れて)
<script type="text/javascript" src="/パス/external.js"></script>
リンクの記述
nofollowタグ無し
<a rel="external" href="リンク先URL">アンカーテキスト</a>
nofollowタグ有り
<a rel="external nofollow" href="リンク先URL">アンカーテキスト</a>
※GoogleやYahoo、Bingといった大手検索エンジンは、リンク属性に「rel="nofollow"」がついているサイトへのリンクは、ページランク等の集計対象に含まない。
MTで対応させる
上記のソースは、MTでは個別記事で動かない。mt.cgi の中に window.onload の記述があって、
アーカイブや個別記事で先に動いてしまう。 そこで prototype.js の Event.observe を使う。
上記「 external.js 」ファイルの最後
window.onload=externalLinks;
を下記に変更
Event.observe(window,'load', externalLinks, false);
また、prototype.js を<head>~</head>に追加
<script type="text/javascript" src="/パス/prototype.js"></script>
これで個別記事でも動く。
関連記事:
http://seofromusa.com/wordpress-customizazion/target-blank-rel-external-nofollow/
http://www.hvc-001.com/mt/2009/01/14211727.html



