フォーム送信を新規画面で

方法だけ知りたい人は一番下へ

Googleで調べ物とかしてるときにテキストボックスに入力してEnterを押して検索をかけると、同一画面内で処理されて今まで見てた結果が見れなくなってしまう。もちろん「戻る」をすればよいのだけれどせっかくタブブラウザなのにいちいち戻るってのは頂けない…ということで新規画面で開けないかと、Altを押しながらEnterしたりCtrl押しながら…とかしたけれどだめだった…(Sleipnirはできるみたいね;Firefox><)
仕方ないので久々にJavaScriptを使うことにした。っていっても数行なのだがw

// タグ名がformのものを配列として取得
var forms = document.getElementsByTagName("form");
// 配列長を取得
var N = forms.length;
// すべてのformタグに対して
for(var i=0;i<N;i++)
{
    // 新規画面で開くように設定
    forms[i].target="_blank";
}
// アドレス化したときの対策
// void(0);

という感じ。void(0)は何もしないのだけれどアドレス化したときに必要となる。なぜかというと、アドレス化して動かすと、最後に処理されたデータを画面に表示してしまうからだ。この場合だと_blankと表示されてしまう。それを防ぐためにvoid(0)をさせる。JavaScriptはfor(var foo in bar)も使え、各要素を読み出すときはbar[foo]と読み出すのだが、配列に対して用いるとfooは数字だけでなくてlengthとかにもなってしまうので用いれない…
長くなったが実際には下の文字列をアドレスに打ち込めばよい

javascript:var forms = document.getElementsByTagName("form");var N = forms.length;for(var i=0;i<N;i++){ forms[i].target="_blank"; }void(0);

ブックマークしておくと便利かも