トップ > Tech > JavaScript > Chrome(Chromium)で新しいウィンドウが開かない問題

Chrome(Chromium)で新しいウィンドウが開かない問題

導入

あまりない例かもしれないが上記のようなフォームがあって、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();

以上、実に簡単だけど、意外にわからない穴でした。

(2010/03/25 17:26:28)
15341
プロフィール

Kenz Yamada(山田研二)。1984年生。大阪。ちょっとずつ好きなプログラム作ってます。 好きなものはカメラと旅行。ガジェットや身の回り、ちょっとこだわります。 詳しくは Web mixi で。

Bookmark and Share