Форматирование формы 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 решения.
Ответы
Ответ 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, похоже, нет таких проблем (по крайней мере, между локальным хостом и фактическим именем машины).