IE7ではJavaScriptから動的に追加したiframeにname/target指定してフォームを送信すると新規ウィンドウが立ち上がってしまう

挙動

  • name属性とtarget属性が一致しているはずなのに、IE7だと新規ウィンドウが立ち上がってしまう。

原因

  • IE7では動的に追加したiframeはname属性が正しく設定されていない場合がある。

検証ページ

対策

  • あらかじめiframeはHTMLに書いておく。
  • もしくは、iframe追加後にloadを検知して、name属性を確認し、再設定する。

HTML

<form id="post-to-iframe" action="http://www.yahoo.co.jp/">
</form>

JS

var iframe = document.createElement('iframe');

iframe.name = 'iframe01';
document.getElementsByTagName('body')[0].appendChild(iframe);
var form = document.getElementById('post-to-iframe');
form.target = 'iframe01';
form.submit();

コメント / トラックバック

コメントは受け付けていません。