Почему Internet Explorer открывает отправку формы в новом окне, а не в динамически вставляемом фрейме? - PullRequest
4 голосов
/ 18 мая 2009

Я пытаюсь отправить форму на скрытый динамически вставленный 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';

Это работает в Firefox, но не в Internet Explorer.

Ответы [ 2 ]

13 голосов
/ 18 мая 2009

Видимо, вам нужно включить имя в вызов 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 голосов
/ 18 мая 2009

Не проще ли это сделать с помощью Ajax submit? Подход iframe, который вы представляете, очень хакерский и подвержен множеству проблем.

Вот плагин jQuery Form , который облегчает выполнение отправки Ajax, обрабатывая всю сериализацию значений формы для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...