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.