アンカーのtarget属性を常に_topにするGreasemonkey


target=”_blank”なんてこの世から消えれば良いと思ってるさりですこんばんは。

皆さんどうですか?target=”_blank”正直鬱陶しくないですか?
多分好きな人の方が多いんでしょうけど。
私は鬱陶しいです。嫌いです。軽く殺意を覚えます。
HTML4.01とXHTML1.0で非推奨だとか、XHTML1.1とXHTMLBasicとISO/IEM15445:2000で廃止済みだとか、そういう事とは関係なく嫌いです。

趣味のWebデザイン

バカな閲覧者は勝手に不幸になればいい

に超同意。
拍手を送り崇め奉りたい。
その後のエントリーバカな閲覧者は勝手に不幸になればいいtarget 属性と信念の選択も参考になりますのでどうぞ。

現在も主流であろうIE6の場合、開けば開く程ウィンドウも増えてく訳ですよね。
//タブブラウザになったIE7もtarget=”_blank”の場合
//デフォルトでは新規タブでなく新規ウィンドウで開かれるようです
//(※未確認)

私はFirefoxで”新規ウィンドウを開く場合、常に新規タブに開く”ようにしているので別窓ではなく別タブですが、どっちにしろ鬱陶しい事に変わりありません。
ムダに新規タブ(ウィンドウ)が作られてくのが嫌なんです。

非推奨になってる理由というのは思いつくところで2つあって、1つは対応していないブラウザがある事。
携帯のブラウザがまさにそうで、しかも広まっている。
もう1つはユーザの予想しない(意図しない)動きをする、つまり”ユーザの自由を奪う”という事。
私はまさに「同タブで開きたい」という”自由を奪”われているから嫌なんですよね。
IEならShift+クリックで新規ウィンドウに開かれるし、他のモダンブラウザなら環境設定などでいかようにもできるじゃないですか。
//私は中クリックで新規タブに開くようにしてますが

CSS HappyLifeのエントリーで管理人のひらさんが

ウチのサイトでも外部リンクは殆どが別ウィンドウにしちゃってますが、それに慣れてしまっているユーザーの方が多数居るって思ってます。
ボク個人もそうですが、知識なんて何も無い頃見てたサイトの大半が外部リンク=別窓だったのも今の自分を形成しちゃってる一つかもしれません。
もちろん、理由はわかってはいるんですけどね。

そういえばikesai.comでも、そんな調査やってたと思うんですけど、やっぱり別窓派が多かったっていう現実もあり、仕様に忠実じゃないボクは、OKだと思っちゃいます。

推奨はしないけど、許容範囲みたいな?

っていうコメントをされててちょっとショックでした。

確かにCSSに関する話題がメインのブログだけど(とても勉強になります)(X)HTMLあってこそのCSSだし、正しいマークアップができてるからスタイルシートを適用できる訳でしょ?
違いますかね?
仕様通りにガチガチなマークアップにしなくても良いと思うんだけど、かと言って現在のトレンド的に非推奨・廃止されてるものを「許容範囲」って言っちゃうのはちょっとなぁと思ってしまった。
//私も分かってない所の方が多いけど、まぁプロじゃないからw

氏の基準って”仕様に準拠したマークアップをした後にCSSで見栄えを整える”って言うより、”CSSで制御できる所は制御して、できないところは非準拠でも(X)HTMLの中で指定”って感じなのかな。
悪いって言ってる訳じゃ無いんですけどね。
影響力のある方だから、できればそういう部分も(ご存知なのだから)啓蒙して欲しかったな…とか思ったという話。

で。

target=”_blank”好きの人から
「アンタのサイトでも外部リンクはtarget=”_blank”を指定してくれ」
と言われても私には応えられないのと同じように、target=”_blank”嫌いの私がどこかのサイトに
「全てのリンクのtarget属性を排除してくれ」と言っても無理な訳です。

じゃあFirefoxの設定で”全てのリンクを同タブに開く”設定にすれば良いかと言うとそうもいかないのです。

例えばMovable Typeの管理画面ですが、「サイトを再構築」をクリックするとJavaScriptのwindow.openが実行され、新規ウィンドウで開かれます。
//(挙動としては)同タブ・ウィンドウで開かれても良い気がしますが
そして開かれた画面には元の管理画面へ戻るリンクがありません。
URI叩く等の手立てはありますが、新規タブで開く→Cmd+W(Ctrl+W)でタブを閉じた方が早いです。
「サイトを確認」のアンカーにはtarget=”_blank”が指定されています。
これは(基本的に)非公開である管理画面から公開しているブログを開こうとしていますから、むしろベターな挙動だと思います。
Gmailの設定→アカウントの設定→他のアカウントの追加でも、MTの再構築と同様の理由で同タブに開く訳にはいきません。

そんな理由でFxのタブ設定をいじる事ができず、毎日何件も読むphpspot開発日誌さんやgooニュースで不便利を強いられてた訳です。

ところがふと気が付いた。

Greasemonkeyがあるじゃん!!

そんな訳で書いてみました。
超単純なので配る程のものじゃありませんが、自分で書くのが面倒な方はどうぞ。

Target Top(センスと英語力の無いネーミング…)

デフォルトの指定URIはhttp://*となっていますのでご注意を。
適用したいサイトのドメイン(URI)を編集して下さい。

コードは以下の通り。

// ==UserScript==
// @name Target Top
// @namespace http://www.nikolaschka.com/
// @description ver.0.2
// @include http://*
// ==/UserScript==

(function() {
 var REPLACE_TARGET = "_blank";
 var SET_TARGET = "_top";
 var DEL_REL = "external";
 aList = document.getElementsByTagName("a");
 
 for(i=0; i<aList.length; i++) {
  if(aList[i].getAttribute("target") == REPLACE_TARGET) {
   aList[i].setAttribute("target", SET_TARGET);
  } else if(aList[i].getAttribute("rel") == DEL_REL) {
   aList[i].removeAttribute("rel");
  }
 }
})();

a要素のtarget属性には”_blank” “_self” “_top” “_parent”と”[任意のウィンドウ名]“の5種類ありますが、

  • “_self” “_parent” “[任意のウィンドウ名]“の場合、フレーム構成のページで多い(と思う)
  • “_top”はわざわざ指定する必要が無い

という理由で、対象はあえて”_blank”のみとしました。
しょっぱくてどうもすいません。

これでtarget=”_blank”満載の企業サイトも快適に閲覧できます。
ありがとうGreasemonkey!

コメントを残す

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

*

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