为什么Internet Explorer在新窗口中而不是在动态插入的iframe中打开表单提交?

lam*_*cck 4 javascript iframe internet-explorer dom

我试图将表单发布到隐藏的,动态插入的iframe,但在Internet Explorer中,表单提交将在新窗口中打开.

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';
Run Code Online (Sandbox Code Playgroud)

这适用于Firefox但不适用于Internet Explorer.

lam*_*cck 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';
Run Code Online (Sandbox Code Playgroud)