定位到iframe的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在新标签中打开,这显然不是我想要的。
我发现了一些 相关的 post ,但没有解决我的具体情况,他们的解决scheme不起作用。
不幸的是,这项工作是在一个私有networking的专有系统,所以我不能只是简单地提供一个链接。
我也尝试使用frame
而不是iframe
作为相关主题的答案是以这种方式使用iframe
s已被弃用。 但结果是一样的。
此外, iframe
是硬编码到页面的,因为它不是用JavaScriptdynamic添加的。 最后,就像我之前所说的那样,这在Chrome中完美运行,但在Firefox中完全无法工作。 IE不是一个问题,所以任何非IE友好的解决scheme,欢迎!
这听起来很愚蠢,但是你是否尝试给iframe一个与name属性相同的id? 这似乎解决了一些与forms有关的问题。
<form method="post" action="link/to/post/to" target="take_the_reload"> ... </form> <iframe id="take_the_reload" name="take_the_reload"></iframe>
我不知道是否可以回答这样一个老问题,但我想我正在做这件事。
对于将来要研究这个问题的任何人来说,请注意,如果您有两个或多个定位相同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是这样devise的。 我正在使用Firefox 18(截至撰写本文时的最新版本),这仍然是一个问题。
希望这可以帮助别人; 在我终于弄清楚问题出在哪里之前,我已经咬牙切齿了2个小时了。
干杯!
提示:不要在ID和名称中使用大写字母
不起作用
<iframe id="formSubmit" name="formSubmit">
作品
<iframe id="form_submit" name="form_submit">
对我来说这真是一个惊喜!
对于稍后可能遇到此问题的人,我通过向iframe添加名称属性来解决此问题,该iframe与iframe的id相同:
<iframe id='iframeID' name='iframeID'></iframe>
愚蠢的,是的,但这是Firefox的喜欢它
这可能听起来很愚蠢和奇怪,但接下来的步骤解决了我的问题(Firefox在Iframe中提交时打开新标签)
1)为“id”和“name”Iframe属性使用相同的值
2)不要在iframe的“id”或“name”属性中使用大写字母(myIframe => my_iframe)
3)检查iframe的“src”属性,当它是“about:blank”的时候它不起作用,这个属性应该被删除,就像我看到的
只是想补充,以上都没有为我工作。 我发现一个额外的原因,使其工作。 添加id已经完成了,然后实际上添加了一个src =框架,这个框架和它将要显示的页面一样。 所以我的代码是:
<iframe id="eframe" name="eframe" src="created.php?"></iframe>
它解决了这个问题,不再在Firefox的另一个窗口中打开!
这个问题的另一个变种:我有这个问题,“名称”/“ID”的build议没有任何区别。 我发现对我来说这似乎是一个与域有关的问题。
我在http://mypc/app/page.aspx打开了一个页面,其中有两个iframe(A和B)。
iframe A打开一个新的浏览器窗口http://localhost/app/otherpage.aspx 。 otherpage.aspx有一个表单,目标是框架B.提交表单反而打开一个新的窗口。
如果我更改iFrame A以打开新的浏览器窗口http://mypc/app/otherpage.aspx ,则从otherpage.aspx提交表单正确显示结果在iFrame B.
所以,至less在Firefox 47.0中,似乎是阻止了跨域“定位”。 IE11似乎没有任何这样的担心(至less,本地主机和实际的机器名称之间)。