ユーザビリティを考慮したtarget windowの開き方
以前書いた【XHTML+CSSに足りない5つのコト】と言うエントリーの中でa要素のtarget="_blank"の必要性を書いた所、「それはユーザーの自由である。製作者側でコントロールする問題ではない」とのご意見を多数いただきました。
この意見に対してはおおむね同感します。
a要素のtarget属性の_blankに関しては必要なユーザーも必要でないユーザーもいます。
ただ一点同意しかねるのは、すべてのユーザーにその自由(リンク先をターゲットで開くか、セルフで開くかの選択)が与えらているかというと、そんな事はない。
リンク先のターゲットコントロールに関しては、ある程度インターネットに熟知したユーザーにのみ可能な操作なのだから。
サイト制作者として「すべてのユーザーがwindowのターゲットコントロールを簡単に出来るサイトならユーザビリティが高いのでは?」と感じたのでそれを実装するスクリプトを作ってみました。
javascriptソース
function targetControl(mode) {
if(!document.getElementsByTagName || !mode) return;
var anchors = document.getElementsByTagName("a");
for (var i=0; i<anchors.length; i++) {
var anchor = anchors[i];
if (anchor.getAttribute("href") && anchor.getAttribute("class") == "blank"){
anchor.target = mode;
}
}
}
window.onload = function(){
targetControl("_blank");
}
(x)htmlのa要素に記述するソース
<a href="http://blog.webcreativepark.net/" class="blank">リンク先名</a>
(x)htmlのユーザーがターゲットウィンドウをコントロールする所
<input type="button" onclick="targetControl(mode='_self')" value="リンクをselfで開く" />
これで基本的にはclass属性に"blank"と設定しているa要素のリンクはすべて別ウィンドウで開きます。
しかし、『リンクをselfで開く』ボタンが押された場合はa要素のリンクはすべて同一ウィンドウ上で開きます。
問題点は『リンクをselfで開く』という記述が初心者に激しくわかりにくい所。
なんてなんて書いたらわかりやすいでしょうかね?
個人的な意見
以前、このスクリプトと同じような感じで『(x)html1.1や(x)html1.0 strictでターゲットブランクで開くスクリプト』が話題になった事がある。
その多くがターゲットブランクをjavascriptのonclickイベントで実装する物だったのですが、それでは目的が正しい(x)htmlを書くことになっていて、なぜtarget="_blank"が推奨されないかというものに考慮されていなかった用に感じる。(私も当時はそうやって実装していたのですが)
ブラウザでtarget="_blank"の機能を切っていても_blankで開くサイト・・・・・
そういうのって制作者の自己満足ですよね。
関連エントリー
空欄チェック
フォームへの入力を操作する
AjaxやJavaScriptのライブラリー
CSS Nite in OSAKA エコなWebデザイナーになろう by 長谷川恭久
javascriptを読み込みと同時に実行する方法