html-针对iframe的Firefox表单正在打开新标签
...
我的问题如下:
我有一个需要阻止的表单在提交时刷新它所在的页面。 为解决此问题,我一直在使用一个空的iframe作为表单的iframe。 该功能完全可以在Chrome(v12.0.742)中按预期方式工作,但在Firefox(v6.0)中无法正常工作。
在Firefox中发生的事情是,在提交表单后,iframe在新选项卡中打开,这显然不是我想要的。
我发现了一些相关的帖子,但是都没有解决我的特殊情况,因此他们的解决方案不起作用。
不幸的是,这项工作是在专用网络中的专有系统上进行的,因此我不能仅仅提供一个链接。
我还尝试过使用iframe(而不是iframe)作为相关主题的答案,因为不赞成以这种方式使用iframes。 但是结果是相同的。
同样,iframe并不是在JavaScript中动态添加的,而是被硬编码到页面中。 最后,就像我之前说的那样,这在Chrome浏览器中可以完美运行,但在Firefox中根本无法运行。 IE不是问题,因此欢迎任何非IE友好的解决方案!
ssell asked 2020-08-12T02:29:55Z
7个解决方案
80 votes
这听起来可能很愚蠢,但是您是否尝试为iframe提供与name属性相同的id? 这似乎解决了一些与表格有关的问题。
...
sg3s answered 2020-08-12T02:30:05Z
10 votes
对于以后研究此内容的任何人,请注意,如果您有两个或多个针对相同iframe id的表单,则Firefox将打开一个新标签,除非两个表单的名称不同。 奇怪的是,这在Chrome中不是问题。 因此,例如,这在Firefox中不起作用
但它将在Chrome中运行。 如果要使代码在Chrome和Firefox中都可以使用,则必须执行以下操作:
不知道这是一个错误还是Firefox是按照这种方式设计的。 我正在使用Firefox 18(撰写本文时为最新版本),但这仍然是一个问题。
希望这对别人有帮助; 在这之前,我一直咬着牙大约2个小时,直到我终于弄清楚问题出在哪里。
干杯!
Charles answered 2020-08-12T02:30:44Z
8 votes
提示:请勿在ID和名称中使用大写字母
不起作用
作品
对我来说真是一个惊喜!
Pawello answered 2020-08-12T02:31:16Z
4 votes
对于以后可能遇到此问题的用户,我通过向iframe中添加与iframe的ID相同的name属性来解决它:
愚蠢的,是的,但这就是Firefox喜欢的
Luke Madhanga answered 2020-08-12T02:31:41Z
1 votes
听起来可能很愚蠢和奇怪,但是接下来的步骤解决了我的问题(Firefox在iframe中提交时打开了新标签)
1)对“ id”和“ name” iframe属性使用相同的值
2)不要在Iframe的“ id”或“ name”属性中使用大写字母(myIframe => my_iframe)
3)检查Iframe的“ src”属性,当它为“关于:空白”时,它对我不起作用,该属性应按我的见解删除
Artem Chernovol answered 2020-08-12T02:32:18Z
0 votes
只是想补充一点,以上都不对我有用。 我发现了使其起作用的其他原因。 添加完id后,实际上将src =添加到与要显示的页面相同的框架以及?。 所以我的代码是:
解决了该问题,不再在firefox的另一个窗口中打开!
GarfieldTheGreat answered 2020-08-12T02:32:42Z
0 votes
这个问题的另一个变化:我遇到了同样的问题,“ 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似乎没有任何此类担忧(至少在localhost和实际的计算机名称之间)。
Loophole answered 2020-08-12T02:34:02Z