IE Issue: Submitting form to an iframe using javascript

forms, iframe, javascript

Solution

You've hit a bug in Internet Explorer.

You CAN NOT set the name attribute of ANY element in IE using the standard DOM Method `.setAttribute('name', value);`

In IE (before version 8 running in IE8 standards mode) this method will not work to set the name attribute.

You need to use one of the following:

//A (any browser)
var iframe = document.createElement('iframe');
iframe.name = 'frame_x';

//B (only in IE)
var iframe = document.createElement('<iframe name="frame_x"/>');

//C (use a JS library that fixes the bug (e.g. jQuery))
var iframe = $('<iframe name="frame_x"></iframe>');

//D (using jQuery to set the attribute on an existing element)
$('iframe:first').attr('name','frame_x');

Problem

I was trying to create an iframe element using javascript, like so: ``` var iframe = document.createElement('iframe'); iframe.setAttribute('name', 'frame_x'); ``` However, when I tried submitting a form using the newly-created iframe as target, IE opens up a new window, instead of using the iframe. ``` form.setAttribute('target', 'frame_x'); form.submit(); ``` This works perfectly in Firefox. Also, the iframe gets created, but is not used.

Original source