针对iframe的Firefox表单正在打开新标签页

时间:2011-08-16 18:43:01

标签: html forms firefox

<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,这显然不是我想要的。

我找到了some related posts,但没有一个解决我的特殊情况,他们的解决方案无效。

不幸的是,这项工作是在专用网络中的专有系统上进行的,所以我不能只提供一个链接。

我还尝试使用frame而不是iframe作为对相关主题的回答是,不推荐使用iframe这种方式。但结果是一样的。

此外,iframe被硬编码到页面中,因为它不会动态添加JavaScript。最后,正如我之前所说的,这在Chrome中完美运行,但在Firefox中根本无法工作。 IE不是一个问题,因此欢迎任何非IE友好的解决方案!

7 个答案:

答案 0 :(得分:78)

这可能听起来很愚蠢,但是你尝试给iframe一个与name属性相同的id吗?这似乎解决了与表格有关的一些问题。

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

    ...

</form>

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

答案 1 :(得分:10)

对于将来查看此内容的任何人,请注意,如果您有两个或多个定位同一iframe ID的表单, 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(截至本文撰写时的最新版本),这仍然是一个问题。

希望这有助于其他人;在我最终弄清楚问题是什么之前,我咬牙切齿大约2个小时。

干杯!

答案 2 :(得分:8)

提示:请勿在ID和名称中使用大写字母

不起作用

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

作品

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

对我来说这真是一个惊喜!

答案 3 :(得分:4)

对于那些可能在以后遇到此问题的人,我通过向iframe添加名称属性来解决它,该iframe与iframe的ID相同:

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

愚蠢,是的,但这就是火狐喜欢它

答案 4 :(得分:1)

这可能听起来很愚蠢和奇怪,但接下来的步骤解决了我的问题 (Firefox在iframe中提交时打开了新选项卡)

1)对&#34; id&#34;使用相同的值和&#34;名称&#34; iframe属性

2)不要在&#34; id&#34;中使用大写字母。或&#34;名称&#34; iframe的属性(myIframe =&gt; my_iframe)

3)检查iframe&#34; src&#34;属性,当它是&#34; about:blank&#34;时,它对我不起作用,我应该删除此属性

答案 5 :(得分:0)

只想补充一点,以上都不适合我。我找到了另一个使其有效的原因。添加了id,然后实际上将src =添加到与它将要显示的页面相同的帧中。所以我的代码是:

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

哪个解决了这个问题,不再在firefox的另一个窗口中打开了!

答案 6 :(得分:0)

这个问题的另一个变化:我遇到了同样的问题,并且&#34;名称&#34; /&#34; id&#34;建议没有任何区别。我发现对我来说这似乎是一个与域名相关的问题。

我在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中,它似乎阻止了跨域&#34;目标&#34;。 IE11似乎没有任何此类问题(至少在localhost和实际机器名称之间)。