幾度と無くtarget="_blank"
について書きたくなるのだが、きっと僕はそれほどにtarget="_blank"
が嫌いなのだろうと思う。
このtarget="_blank"
の話ってのが、もっともわかりやすいWebを操作する一例だと思うのだけれど、どうだろう。未だDTPとかいった固定的デザインの呪縛から逃れられていないからこそtarget="_blank"
を擁護する声が上がるのではなかろうか。……と、そんな感じの理想論を語ってみる。
まず、target="_blank"
が消えることは無いため、ブラウザ側で「target属性を無視」という設定
は必須。UAは利用者が不利益を被る可能性があるならばそれを排除する機能を有するべきだと思う。その上で、別のサイトへ移ったときに元のサイトのページのタブが残
せるような設定も可能とすべきだ。それによって閲覧者は選択肢を得ることができるのだ。そしてこれこそWebを操作することに他ならない。
現状はその方向へ動きつつあると感じている。
既に利用者が不利益を被る可能性がある機能は排除可能になりつつある。不完全とはいえ別窓で開く指定を無効化するよう設定することができるようになっていたり、右クリックを禁止するなどという小細工を無効化するように設定できるようになっているのが一例だ。
また、ユーザスタイルシートを取り巻く状況も急速によくなりつつある。Firefoxに於けるユーザスタイルシート環境はStylishによって大幅に改善された。OperaもOpera9からドメイン単位でユーザスタイルシートを適応することが可能となった。ユーザはスタイルシートによってWebを操作可能になりつつある。
ユーザスタイルシートによってユーザがWebを操作していると感じるには、ユーザスタイルシートを簡単に作成する環境が整う必要があるだろう。これは相当先のことになると予想される。利用環境すらままならないのだから。しかしながら、こと今回取り上げているtarget="_blank"
の話についてのみであれば、UAが用意するだけで十分事足りるだろう。
話をtarget="_blank"
に戻そう。ユーザスタイルシート環境が整い、CSS3のハイパーリンクプレゼンテーションモジュールが実装されれば、ちょちょいと書き加えるだけで別サイトのリンクを別窓で開くことが可能になる。更に言ってしまえば、別ウィンドウで開くか、タブで開くかまで指定することが可能になる。こうなれば理想的だ。いつの話かは知らないが。
とりあえずa[href^="http:"]{target:new}
と書けるようになれば、個人的には解決。むしろそれ以外の解は望んでいない。とりあえず-o-target:new
とかでも良いけど。
よく、target属性がよくない理由として挙げられるものに、「target属性を指定しなければ、ユーザーがリンク先のページを新しいウィンドウで開くか同じウィンドウで開くか自由に選択できる」というのがあるけれど、これはユーザーが「新しいウィンドウ/同じウィンドウ」を使い分けることができており、しかもミスをしないことが前提になっている。これは現実に即していないように思われる。私みたいにしょっちゅう操作ミスをする人間もいるだろうし、それ以前にユーザーの大半を占める「ブラウザはIE、スターページはYahoo!」レベルの人達は上手にウィンドウを使い分けられていないだろう。
一見正論だけれども、上手にウィンドウを使い分けられていない
ユーザにははそもそもウィンドウを使い分けようと思い立たないユーザもいるわけで、実はそちらの方が大半だったりする。更に言ってしまえば、タブブラウザを使いこなさない人も多い。使いこなそうとすらしないのだ。誰もが上級者になろうとするわけではない為、これは必然といえる。タブブラウザの認識としてはタスクバーにボタンが増えなくなったね、というだけ。例えばそういう人の操作の一例を挙げてみよう。
これ以上の説明は必要あるまい。タブブラウザだろうが何だろうが関係ない。分からないものは分からないのだから。
別窓で開かない場合は面倒だがいつか戻ることができる。しかし別窓で開いてしまった場合は閉じることに気づかないと戻ることができない。この差を認識した上で、それでも使いたいのであればtarget="_blank"
と書けばいいと思う。そのための文書型はきちんと残されているのだから。引け目なんて感じる必要はない。
制作者は閲覧者の理想を知り得ない。だからこそWebを操作できる環境の実現が必要なのだ。そのために初期設定では誰でも使うことができる環境を用意する必要がある。現状はウェブ制作者がそれを踏まえてサイトを作るしか方法はない。しかし将来的にはUAが誰でも使うことができる環境を用意してしかるべきだ。その上で別窓で開く利便性を提供するのが理想だろう。
もちろんtarget属性の良い利用方法についての議論があってもいい
とは思う。建設的で良い。間違いなくDTPの呪縛から逃れられない人は存在し続けるのだから。
蛇足1。
strictを宣言しつつ別窓で開くにはどうすればよいか、といったくだらないことを考えているウェブ制作者が散見される昨今。そういう人が何故strictにこだわるのかさっぱり分からない。strict宣言=ウェブ標準、とでも思っているのだろうか。そういう人はtransitionalを宣言して堂々と使えばいいのに、と思う。JavaScriptで適当に書いて選択肢を奪うくらいなら、むしろtarget
属性を使った方がきれいだと言うに。世の中のウェブ標準とやらは謎だらけで困ります。
蛇足2。これについてはtarget属性の利便性にも書いた記憶があるが、最近はちょいと変わりつつあるので改めて書いておく。Operaユーザである私は2つの理由により同じウィンドウで開く事の方が多い。
別のサイトへ移ったときに元のサイトのページのタブが残っていたほうが、あとで戻るときに楽だからだ。もし、リンク先のページを同じタブで開いてしまったら、そのサイトを閲覧した後で元のサイトを見たくなったときに、「戻る」を連打しなければならない。一番わかりやすい例が検索エンジンで、見つかったページを見るにしても検索結果は残しておきたい。
検索結果に戻るときは巻き戻しを使う。最近アクションをRewind & Back
にしたことでより快適になった。検索結果から他のサイトへ飛ぶことは稀ですので大抵の場合はShift+Zを1回押すだけで巻き戻し機能によって検索結果まで一気に戻ることができる。仮に他のページへ遷移していたとしても数回押すだけ。Operaのキャッシュ処理は高速な為、多くの場合ウィンドウを閉じる以上の体感速度となる。