通常外部リンクなどを別窓で開く際に、target="_blank"を使うと思うのですが、コレは非推奨となっているので、もうちょっと美しく別窓で開くにはどうしたらいいか?
と何度か考えた事がありますが、適当にぐぐると、JavaScriptを使うものが何点かあるけど、ソレもイマイチスマートじゃない。
例えば下記で紹介されているような。
http://allabout.co.jp/internet/hpcreate/closeup/CU20040118A/
コレはコレで今までの問題を解決するにはいいのかなーと思うのですが、ボクが個人的に求めているのはもうちょっとスマートなやり方。
今まで、この問題に関して深く調べた事が無かったのですが、雲のむこうの人からこういう方法もあるよ。
って教わったので、今回はそのやり方を紹介いたします。
取り合えず、何だかんだ言って結局JavaScriptを使うわけですが...
まずは下記のスクリプトを用意。
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") anchor.target = "_blank"; } } window.onload=externalLinks;
コレをhead要素の範囲内に、
<script src="../js/external.js" type="text/javascript"></script>
のような感じで読み込む。
リンクの方には、通常下記のようになっているのを、
<a href="/index.shtml" target="_blank">トップへ</a>
rel属性に変える。
<a href="/index.shtml" rel="external">トップへ</a>
↑こんな感じで。
コレでOKです。
さすがにtarget="_blank"に比べると面倒ですが、自分が今まで知ってた方法と比べれば随分スマートかな、と思います。
JavaScriptがOFFだとただのリンクですが、別窓でどーしても開いてくれなきゃ致命的とかそんな事は有り得ないかと思うので問題ないと思います。
この方法に関して色々ググってたらコレが元ネタか!ってエントリーが見つかったので、あわせて参考にして下さいまし。
もっと詳しく色々載ってます。
tcervo.com
http://tcervo.com/index.php?p=18
hori-uchi.com
http://hori-uchi.com/archives/000424.html