Добро пожаловать на SO.
Одна проблема, которую я видел в вашем коде, заключается в том, что вы никогда не отображаете iframe. Для того, чтобы он появился на странице, вы должны вставить его в свой документ. В моем примере я создаю тег <span>
, который будет выполнять роль слота, в который будет вставлен iframe.
Посмотрите, делает ли это то, что вы ищете.
<!-- /2139399/ie-problema-otpravka-formy-v-iframe-s-ispolzovaniem-javascript -->
<html>
<head>
<script type="text/javascript">
function submitFormToIFrame(){
var form=document.getElementById('myform');
form.setAttribute('target', 'frame_x');
form.submit();
}
</script>
</head>
<body>
<h1>Hello Erwin!</h1>
<form id="myform" name="myform" action="result.html">
<input type="button" value="Submit the Form" onClick="submitFormToIFrame();">
</form>
<span id="iframeSlot">
<script type="text/javascript">
var iframe = document.createElement('iframe');
iframe.setAttribute('name', 'frame_x');
document.getElementById('iframeSlot').appendChild(iframe);
</script>
</span>
</body>
</html>
UPDATE:
Я обнаружил, что это решение работает только в Firefox. Поэтому я немного поэкспериментировал. Кажется, что если вы определяете iframe в html (вместо того, чтобы генерировать его через JS / DOM), тогда он работает. Вот версия, которая работает с IE и Firefox:
<html>
<head>
<script type="text/javascript">
function submitFormToIFrame(){
//IE
if( document.myform ){
document.myform.setAttribute('target','frame_x');
document.myform.submit();
//FF
} else {
var form=document.getElementById('myform');
form.setAttribute('target', 'frame_x');
form.submit();
}
}
</script>
</head>
<body>
<h1>Hello Erwin!</h1>
<form id="myform" name="myform" action="result.html" target="">
<input type="button" value="Submit the Form" onClick="submitFormToIFrame();">
</form>
<span id="iframeSlot">
<iframe name="frame_x">
</iframe>
</span>
</body>
</html>