target=”_blank”は悪か

ちょっとぐぐってみるとわかるんですが、Hyper Linkにtarget=”_blank”をつけるのはかなり嫌われているようです。

原因はいろいろあるようですが、大別すると以下のような感じ。

  • 新しい窓を強制的に開かせることでリソースを消費する
  • W3Cでは非推奨扱い(XHTML1.1以降では既に廃止されている)
  • 利用者から「あたらしい窓で開かない」という選択肢を奪う

まあ最初のやつは戯言なのでどうでもいいとして、基本的には下のふたつが根拠のようです。しかも、W3Cで非推奨扱いになったのは利用者の選択肢を奪うことが理由のようなので、結局は最後の項目が大きな理由と云うことでしょう。

W3Cで非推奨扱いになったにも拘わらず、target=”_blank”はなくなる気配がありません。ということはtarget=”_blank”擁護派もいるわけで、彼らの主張はほぼ次の通りです。

  • ほかのサイトに飛ぶときはいずれにしても別窓をひらくでしょ?

私はどうかというと、確かに他のサイトに飛ぶときは別窓や別タブで開くことが多いようです。ただ、この場合は状況に応じて無意識に使い分けているわけで、target=”_blank”が設定されていない(すなわち選択の自由がある)ことを利用していることになります。また逆に、リンクをクリックしたときに意図せず別窓になることもあるわけで、「別窓開きやがった、うぜえ」と思ったりすることもあります。

このように見てみると、個人的な意見も「target=”_blank”撲滅推進」のように見えるかもしれません。しかし、実際のところは適宜target=”_blank”を使っています。なぜか。どのように開くかを「無意識に使い分けている」と上で書きましたが、残念ながら世の中にはそれが難しい人もいるのです。

クリックするときにShiftを押すだけじゃないか、と思う人もいるかもしれません。でもそれは、あたらしいものに適応していける若い世代だけであって、還暦を過ぎたひとたちにはかなり高いハードルになり得ます。そんなひとたちには、

「インターネット閉じたらまた開かないとだめだし、さっきまで見ていたところにも行けなくなるし、
ほかのところは大丈夫なのになんで?」(注:Internet Explorerを閉じちゃうと窓がなくなるので、もう一度起動しないといけないということ。ちなみに、「戻る」ボタンでさっきのところに戻ることもハードルが高い)

ということになってしまうわけで、適切だと思えるところにtarget=”_blank”を入れてあげることが、ある意味でユーザビリティの向上に繋がっているという側面を否定できません。

こういったことから、無意識でShiftを押すことが身についた世代が還暦を迎える頃までは、target=”_blank”は必要悪として存在し続けるべきだと思うのです。だってほら、「うぜえ」と思う人は他の手段でなんとかできるでしょ?

ところで、target=”_blank”は個々のリンクかbaseのどちらかに設定することになります。前者だと設定したリンク以外はtarget=”_blank”にならないし、後者だとページ内の全てのリンクがtarget=”_blank”になって、それこそ「うざい」ことこの上なし。divとかで特定の領域だけ設定できればいいのにね。

ってことで、以下のJavaScriptを使ってtarget=”_blank”を設定したりしています。bodyのonLoadで呼んであげてください。

function setLinkTargetToBlank() {
  var links = window.document.links;
  var baseURL = window.location.protocol + "//" + window.location.hostname;
  for(var i = 0; i < links.length; i++) {
    if(links[i].href.indexOf(baseURL) != 0) {
      links[i].target="_blank";
    }
  }
}
Posted on

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>