2009-05-17 36 views
4

我想要将表单发布到隐藏的动态插入的iframe,但在Internet Explorer中,表单提交将在新窗口中打开。为什么Internet Explorer在新窗口中打开表单提交而不是动态插入iframe?

var iframe = document.createElement('iframe'); 
iframe.name = 'hidden_iframe'; 
iframe.className = 'NotVisible'; 
iframe.id = 'hidden_iframe'; 
document.body.appendChild(iframe); 

var my_form = document.getElementById('my_form'); 
my_form.target = 'hidden_iframe'; 

这可以在Firefox中使用,但不能上网  Explorer。

回答

13

显然您需要在createElement调用中包含名称。这在IE中工作,并在符合标准的浏览器中导致异常。我们得到:

var iframe; 
try { 
    iframe = document.createElement('<iframe name="hidden_iframe">'); 
} catch (ex) { 
    iframe = document.createElement('iframe'); 
    iframe.name='hidden_iframe'; 
} 

iframe.className = 'NotVisible'; 
iframe.id = 'hidden_iframe'; 
document.body.appendChild(iframe); 

var my_form = document.getElementById('my_form'); 
my_form.target = 'hidden_iframe'; 
+0

+1在IE中发现这种可怕的东西。哪个版本的IE? 6? 7? 8? – scraimer 2009-05-18 06:18:19

+0

对于IE 6和7是必需的。IE 8以任一方式工作。 – lambacck 2009-05-18 12:49:07

0

难道用Ajax提交就不容易吗?你提出的iframe方法非常黑客,并且容易出现很多问题。

这是一个jQuery Form plugin,通过处理表单值的所有序列化,可以使得通过Ajax轻松提交。

相关问题