あまりない例かもしれないが上記のようなフォームがあって、JavaScript から submit し、別ウィンドウ(タブ)に開きたい場合がある。
<form id="form1" target="window1" method="POST" action="xxx.php"> <input type="hidden" id="data1" name="data1"/> </form>
submit 自体は次のように書けば可能である。
$("data1").value = "データ";
$("form1").submit();
これで Firefox や IE では素直に新しい "window1" という名のウィンドウ(タブ)が開き、submit した結果が表示される。2 回目以降もこのウィンドウに表示されるし、このウィンドウを一度閉じても再度新しく開き直してくれる。
しかし、Google Chrome (Chromium) では一度目の submit ではうまくいくものの、その新しいウィンドウをいったん閉じてしまうと 2 回目からは表示されない。実行はされているが、ウィンドウが開かない。
これは非常に困るのでいくつか試行錯誤して、動作するようになったので、記しておく。
結論として、これを解消するには事前に同名のウィンドウを開いておけばいい。 前述のコードの submit の前に window.open をはさむだけである。
$("data1").value = "データ";
window.open("", "window1");
$("form1").submit();
以上、実に簡単だけど、意外にわからない穴でした。
Kenz Yamada(山田研二)。1984年生。大阪。ちょっとずつ好きなプログラム作ってます。
好きなものはカメラと旅行。ガジェットや身の回り、ちょっとこだわります。
詳しくは Web mixi で。