Подтвердить что ты не робот

Форматирование формы Firefox в iframe открывает новую вкладку

<form method="post" target="take_the_reload">

    ...

</form>


<iframe class="hide_me" name="take_the_reload"></iframe>

Моя проблема такова:

У меня есть форма, которую необходимо предотвратить, чтобы обновить страницу, на которой она расположена, когда она отправлена. Чтобы справиться с этой проблемой, я использовал пустой iframe как target для формы. Это работает точно так, как ожидалось в Chrome (v12.0.742), но не работает в Firefox (v6.0).

Что происходит в Firefox, это то, что iframe открывается на новой вкладке при отправке формы, что явно не то, что я хочу.

Я нашел некоторые связанные сообщения, но ни одна из них не касается моей конкретной ситуации, и их решения не работают.

К сожалению, работа находится на частной системе в частной сети, поэтому я не могу просто предоставить ссылку.

Я также попытался использовать frame в отличие от iframe, поскольку ответ на соответствующий вопрос заключался в том, что использование iframe таким образом устарело. Но результаты идентичны.

Также iframe жестко закодирован на странице в том смысле, что он не динамически добавляется с помощью JavaScript. Наконец, как я уже говорил, это работает безупречно в Chrome, но в Firefox не работает вообще. IE не вызывает беспокойства, поэтому приветствуем любые дружественные к IE решения.

4b9b3361

Ответ 1

Это может показаться глупым, но попытался ли дать iframe id так же, как атрибут name? Это, похоже, решает некоторые проблемы, связанные с формами.

<form method="post" action="link/to/post/to" target="take_the_reload">

    ...

</form>

<iframe id="take_the_reload" name="take_the_reload"></iframe>

Ответ 2

Я не знаю, нормально ли мне ответить на такой старый вопрос, но я думаю, что я все равно это делаю.

Для тех, кто в будущем рассматривает это, обратите внимание, что если у вас есть две или более формы, которые нацелены на один и тот же идентификатор iframe, Firefox откроет новую вкладку, если две формы не имеют разных имен. Странно достаточно, это не проблема в Chrome. Так, например, это не будет работать в Firefox

<form method="post" action="link/to/post/to" target="theiframe">
<!---input stuff here---->
</form>

<form method="post" action="link/to/post/to" target="theiframe">
<!---input stuff here---->
</form>

<iframe id="theiframe" name="theiframe"></iframe>

но он будет работать в Chrome. Если вы хотите, чтобы код работал как в Chrome, так и в Firefox, вам нужно сделать что-то вроде:

<form name="form1" method="post" action="link/to/post/to" target="theiframe">
<!---input stuff here---->
</form>

<form name="form2" method="post" action="link/to/post/to" target="theiframe">
<!---input stuff here---->
</form>

<iframe id="theiframe" name="theiframe"></iframe>

Не знаю, является ли это ошибкой, или Firefox просто разработан именно так. Я работаю с Firefox 18 (последняя версия на момент написания этой статьи), и это все еще проблема.

Надеюсь, это поможет кому-то другому; Я скрежетал зубами над этим около двух часов, прежде чем я, наконец, понял, в чем проблема.

Ура!

Ответ 3

СОВЕТ. Не используйте заглавные буквы в id и имени

Не работает

<iframe id="formSubmit" name="formSubmit">

Работа

<iframe id="form_submit" name="form_submit">

Это был такой сюрприз для меня!

Ответ 4

Для тех, кто может столкнуться с этой проблемой позже, я решил ее, добавив атрибут name в iframe, который был таким же, как идентификатор iframe:

<iframe id='iframeID' name='iframeID'></iframe>

Глупо, да, но что firefox ему нравится

Ответ 5

Это может показаться глупым и странным, но следующие шаги решили мою проблему (Firefox открывал новую вкладку при отправке в iframe)

1) Используйте те же значения для атрибутов "id" и "name" Iframe

2) Не используйте верхний регистр в атрибуте "id" или "name" iframe (myIframe = > my_iframe)

3) Проверьте атрибут "src" iframe, это не сработало для меня, когда оно было "около: пусто", этот атрибут должен быть удален, поскольку я вижу

Ответ 6

Просто хочу добавить, ни один из вышеперечисленных не работал у меня. Я нашел дополнительную причину, которая заставила его работать. Добавление id было выполнено, а затем на самом деле добавление src= в фрейм, который совпадает с страницей, которую он будет показывать вместе с символом?. Итак, мой код:

    <iframe id="eframe" name="eframe" src="created.php?"></iframe>

Что решает проблему, больше не открывается в другом окне в firefox!

Ответ 7

Другой вариант этой проблемы: у меня была такая же проблема, и предложения "name" / "id" не имели никакого значения. Я обнаружил, что для меня это проблема, связанная с доменом.

Я открываю страницу в http://mypc/app/page.aspx с двумя iframe (A и B).

iframe A открывает новое окно браузера http://localhost/app/otherpage.aspx. otherpage.aspx имеет форму, которая нацелена на iFrame B. Отправка формы открывает вместо этого новое окно.

Если я изменил iFrame A, чтобы открыть новое окно браузера в http://mypc/app/otherpage.aspx, то отправка формы из otherpage.aspx корректно отображает результат в iFrame B.

Итак, по крайней мере, в Firefox 47.0, похоже, это предотвращает междоменное "нацеливание". У IE11, похоже, нет таких проблем (по крайней мере, между локальным хостом и фактическим именем машины).