ヒントモードで target="_blank" の恐怖から開放された
イントロダクション
ネットウォッチャーを悩ませる古典的問題として target="_blank" 問題がある。
target="_blank" とは,左クリックでリンクを開くときの動作を予測不可能にする恐怖の target 属性である。
例えば,二つの蛇口を持つ水道があるとしよう。これは右側の蛇口を回せば湯が,左側の蛇口を回せば水が出ることになっている。水道トラブルで困ったとき,クラ○アンが勝手に target="_blank" 属性を水道に与えたとしよう。すると,前述の規則性は破壊される。僕らは水道のことはさっぱり分からないので,右側を回したら湯が出るのか,それとも水が出るのか予測不可能なのだ。そして,毎日この脅威に怯えることになる。
快適なブラウジング――つまり,思考のスピードでブラウザを操作するには,あるページへの移動と帰還を一環した操作で行える必要がある。
target="_blank" を指定されていると,ページから帰還の際,ブラウザの戻ると閉じるの二つの動作から一つを選ぶ多肢選択方式になり,一貫性が破壊されてしまう。
そして target="_blank" 問題に対して次のようないくつかの処方箋があるが,どれも完全な解決には至っていない。
- moziilaのシングルウィンドウモード
- 172962 Firefox: ネイティブ・シングルウィンドウモード - えむもじら
- リンク以外にホップアップも同じウィンドウで開いてしまう
- 172962 Firefox: ネイティブ・シングルウィンドウモード - えむもじら
- greasemonkeyでtarget="_blank"を取り除く
- No Blank for Greasemonkey
- ページを開くたびにリンクを調査する必要がある
- No Blank for Greasemonkey
これらは僕を幼少のときから悩ませていて,そのためリンクをミドルクリックで開く癖が付いてしまった。(ミドルクリックの動作は一貫して行うことが可能)
vimperatorのヒントモードによる解法
hints.show()で開く動作を指定してヒントモードを実行できるっぽい。
引数として拡張ヒントモードの;の後に続く文字を指定する。
厳選するならこんなんとか:
引数 | 動作 |
---|---|
o | カレントタブで開く |
t | 新しいタブで開く |
b | バックグラウンドで開く |
コードはこんなんしておけば,LDRでは常に新しいタブ,それ以外では常にカレントタブで開くようになる。
.vimperatorrc.js:
liberator.globalVariables.localKeyMappings = [ [/^http:\/\/reader\.livedoor\.com\/reader/, [ ['f', function () hints.show("t")], ]], [/^/, [ ['f', function () hints.show("o")], ]], ];
やりましたね!