「ポップアップ」または target="_blank" について

2月5日2009年

DrupalはXHTML 1.0 strictを吐く。そしてXHTML 1.0では aに対して target="_blank" みたいな属性を指定することができない。 XHTMLの考え方として別ウインドウを開くなんてのはきれいじゃないし、そもそも勝手にウインドウを開くのは不愉快千万である。 しかし、いろいろとくだらない理由で別ウインドウを開かなきゃいけないことがある。

そんな時は、JavaScriptで onclick="window.open('foo.html'); return false;" とやるのが定石。 で、これはurlをhrefとwindow.openに2回書かなきゃいけないのでめんどくさい。 ネットを検索してみたら、A target="_blank" alternative for Drupal, or saving users' content by overriding the filter tips linkというページがあって、ここにjQueryのスクリプトが載っていたのでこれを拝借することにした。

そもそもこれはフィルタのヘルプを見ようとしてリンクをクリックするとページが切り替わってしまって入力中の文章が失われてしまうのがうっとうしい、という話なのだけれど、class="target_blank" を指定すれば、他の箇所でも使える。

$(document).ready(function(){
  $("a.target_blank").click(function(){
    window.open(this.href);
    return false;
  });
});

スクリプトそのものは定石の onclick="window.open('foo.html'); return false;" そのもので、jQueryでthis.hrefが引数に渡されるようになっている。 で、template.phpに数行追加することで、書式オプションの説明のリンクに class="target_blank" が付く。

ポップアップを撲滅したいとも思いつつ、別ウインドウが便利なこともあるわけで...