jQueryで別窓を開くリンクを自動で追加する。

XHTMLでは「target=_blank」は非推奨、いわゆる「別窓を開く」ことはユーザさんにまかせるのがいいので使っちゃいけない、ということになっています。

とはいえなければないで不便に感じることもある。ということで「target=_blank」の代わりに通常のリンクに別窓を開くリンクをくっつけるものをjQueryで作ってみました。

jQuery – 別窓を開く

$(function(){
if(!$.browser.safari) {
	$("a.openwindow").each(function () {
		owUrl = $(this).attr("href");
		owTxt = $(this).text();
		owLink = '&nbsp;<a href="'+owUrl+'" class="owimg" title="'+owTxt+'を別窓で開く"><img src="openwin.gif" alt="別窓で開く" /></a>&nbsp';
		$(this).after(owLink);
	});
	$("a.owimg").click(function(){
		window.open(this.href, '');
		return false;
	});
}
});

仕様はいたって簡単で、「openwindow」というクラス名がついたアンカータグのあとに、別窓を開くリンクを別途クラス名「owimg」を割り当て追加し、そのクラス名がついているアンカーがクリックされたら「window.open」で窓を開くといもの。「」をクリックするとjavascriptの「window.open」でページが開きます。

ちなみに「Safari」は処理を除外しています。「window.open」の「return false」がなぜか効かない。親のwindowもリンク先に飛んでしまいます…。なぜ…。いろいろ調べているとSafariではバコバコ落ちまくるサイトが多数(開いた瞬間に落ちるところも)あり、Safariのせいなのか、jQueryのせいなのか、その他の原因なのかが特定できずじまい…。ちょっと時間かかりすぎたので今日は断念。また調査してみなければ。