4

通过 javascript(小书签):我需要创建一个 iframe,然后向其中添加一个表单,然后是一个提交表单的脚本。

以下在 Chrome 中有效,但在 IE 中无效:

var i = document.createElement('iframe'); // also give it id = iframe_id
var frm = document.createElement('form');  // also add inputs and values
var s = document.createElement('script'); // also add innerHTML that submits form 

document.body.appendChild(i);
window.frames['iframe_id'].document.getElementsByTagName('body')[0].appendChild(frm);
window.frames['iframe_id'].document.getElementsByTagName('body')[0].appendChild(s);

在 IE 中出现错误:无法获取未定义或空引用的属性 'appendChild'

在将 iframe 添加到文档之前,我尝试将表单和脚本附加到 iframe:

 i.appendChild(frm);
 i.appendChild(s);
 document.body.appendChild(i);

我在 Chrome 中得到一个奇怪的响应。表单提交的响应出现在一个被阻止的弹出窗口中(而不是我所期望的完全没有)。在 IE 中似乎没有什么事情发生。

4

2 回答 2

7

我建议write()最初使用直接写入文档。

演示:http: //jsfiddle.net/QjPuZ/1/

代码:

var iframeDoc = i.contentDocument || i.contentWindow.document;

iframeDoc.open();
iframeDoc.write("<html><body></body></html>");
iframeDoc.close();

iframeBody = iframeDoc.body;
var frm = iframeDoc.createElement('form');
var s = iframeDoc.createElement('script');
iframeBody.appendChild(frm);
iframeBody.appendChild(s);
于 2013-07-17T11:38:24.130 回答
0

您的示例不起作用只是因为需要在框架内创建元素。

var o = iframeDoc.createElement('form');
iframeDoc.appendChild(o); // "body" is not present in IE, but it works
于 2014-02-22T09:01:59.783 回答