<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が新しいタブで開かれることです。これは明らかに私が望んでいることではありません。
私は somerelatedposts を見つけましたが、私の特定の状況に対処するものはなく、それらのソリューションは機能しません。
残念ながら、この作業はプライベートネットワークの専用システム上で行われるため、単純にリンクを提供することはできません。
frame
ではなくiframe
を使用してみましたが、iframe
を使用することは推奨されていません。しかし、結果は同じです。
また、iframe
は、JavaScriptで動的に追加されないという意味で、ページにハードコードされています。最後に、前に述べたように、これはChromeでは問題なく動作しますが、Firefoxではまったく動作しません。 IEは問題ではないため、IEに適さないソリューションは大歓迎です!
これはばかげて聞こえるかもしれませんが、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>
今後これを検討する人のために、同じiframe IDをターゲットとする2つ以上のフォームがある場合、2つのフォームの名前が異なる場合を除き、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時間歯を食いしばっていました。
乾杯!
ヒント:IDと名前に大文字を使用しないでください
動かない
<iframe id="formSubmit" name="formSubmit">
作品
<iframe id="form_submit" name="form_submit">
それは私にとって驚きでした!
この問題に後で遭遇する可能性がある人のために、iframeのIDと同じ名前属性をiframeに追加することで解決しました。
<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の別のウィンドウで開かなくなりました!
この問題の別のバリエーション:私はこれと同じ問題を抱えていて、 "name"/"id"の提案は何の違いもありませんでした。私にとっては、ドメイン関連の問題であるように見えました。
http://mypc/app/page.aspx に2つの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と実際のマシン名の間)。