リンク先を新しいウィンドウで開かなくするブックマークレットとか

新窓を開きたかったらCmd+クリックすれば良いのであって、targetが指定されてなければユーザはいつでも選択可能なのに、targetを指定されるとユーザの選択の余地が無くなる。不便。
ということで、target="_blank"が指定されている場合に、その指定を削除するbookmarkletを書いた。

javascript:void((function(){for(var i=0;i<document.links.length;i++) if(document.links[i].target=="_blank") document.links[i].target=null;})())

余談

書いてからちょっちあちこち回ってるうちに、Firefoxだとabout:configを弄っておけばtarget="_blank"を同じ窓で開かせることができることがわかった。
http://fb.skr.jp/bowz/archives/002220.html
browser.link.open_newwindowとbrowser.link.open_newwindow.restrictionを弄ったり弄らなかったり。設定値の意味はAbout:config entries - MozillaZine Knowledge Baseを参照。
やったぜこれで上のブックマークレット無くても問題ないじゃん!
と思ったけど、[browser.link.open_newwindow , browser.link.open_newwindow.restriction] = [1,2]にすると、LivedoorReaderで複数頁を一気に開こうとしても全部そのタブで開いてしまい、結局LDRのページから最初のピンのページに飛んで終了となってしまう。[1,1]にすると全部新窓で開いてしまうから鬱陶しい。かといって[1,0]にしてしまうと他のサイトで不便になることは目に見えているので、結局[3,2]のデフォルト設定に戻すことに。

自分が何をやりたいのかを整理してみると

  • targetによるリンクは原則として現在のタブで開く
  • JavaScriptによる新窓は原則として新タブで開き、サイズ指定がある場合は新窓で開く

がやりたいんだけど、browser.link.open_newwindow.restrictionで指定された《新タブ》はbrowser.link.open_newwindowの設定に基づいてひらかれる…っぽい。のでどうにもお手上げ。


なのでやっぱり適宜Greasemonkeyや上のブックマークレットを使ってアレすることになるんだな。っていうかアレか。TabMixPlusを使えば良いのか。何となくバギーな噂を聞くから入れてなかったけど。