45 votes

Formulaire Firefox ciblant un iframe ouvre un nouvel onglet

<form method="post" target="take_the_reload">

    ...

</form>


<iframe class="hide_me" name="take_the_reload"></iframe>

Ma question est comme suit:

J'ai un formulaire qui doit être empêché de l'actualisation de la page, il est situé sur le moment où il est soumis. Pour lutter contre ce problème, j'ai été à l'aide d'un vide iframe le target pour la forme. Cela fonctionne exactement comme prévu dans Chrome (v12.0.742), mais échoue dans Firefox (v6.0).

Ce qui se passe dans Firefox, c'est que l'iframe est ouvert dans un nouvel onglet lors de la soumission du formulaire, ce qui n'est évidemment pas ce que je veux.

J'ai trouvé quelques liées postes, mais aucune adresse de ma situation particulière et de leurs solutions ne fonctionnent pas.

Malheureusement, le travail est un système propriétaire, dans un réseau privé donc je ne peux pas simplement de fournir un lien.

J'ai également essayé d'utiliser un frame contre une iframe comme une réponse à un sujet connexe a été que l'utilisation d' iframes d'une telle manière est obsolète. Mais les résultats sont identiques.

Aussi l' iframe est codée en dur dans la page, dans le sens qu'il n'est pas ajouté de manière dynamique avec JavaScript. Enfin, comme je l'ai dit plus tôt, cela fonctionne parfaitement dans Chrome, mais ne fonctionne pas dans Firefox. IE n'est pas une préoccupation, et donc non-IE-solutions à l'amiable sont les bienvenus!

Je vous remercie à l'avance.

84voto

sg3s Points 6772

Cela peut paraître stupide, mais avez-vous essayé de donner à l'iframe un identifiant identique à l'attribut name? Cela semble résoudre certains problèmes relatifs aux formulaires.

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

    ...

</form>

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

12voto

Pawello Points 51

CONSEIL: n'utilisez pas de lettres majuscules dans l'identifiant et le nom

Ça ne marche pas

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

Travaux

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

C'était une telle surprise pour moi!

11voto

goddfree Points 1451

Je ne sais pas si c'est correct pour moi de répondre à cette vieille question, mais je suppose que je suis en train de faire de toute façon.

Pour tous ceux qui dans l'avenir à la recherche dans ce, note que si vous avez deux ou plusieurs formes qui ciblent les mêmes iframe id, Firefox va ouvrir un nouvel onglet, à moins que les deux formes ont des noms différents. Curieusement, ce n'est pas un problème dans Chrome. Ainsi, par exemple, cela ne fonctionne pas dans 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>

mais il faudra travailler dans le navigateur Chrome. Si vous voulez que le code fonctionne dans Chrome et Firefox que vous avez à faire quelque chose comme:

<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>

Ne sais pas si c'est un bug ou Firefox est juste conçu de cette façon. Je travaille avec Firefox 18 (dernière version en date de la rédaction de cet article) et c'est toujours un problème.

Espérons que cela aide quelqu'un d'autre; j'ai été à serrer les dents sur ce pendant environ 2 heures avant j'ai enfin compris quel était le problème.

Cheers!

4voto

Luke Madhanga Points 353

Pour ceux qui pourraient rencontrer ce problème plus tard, je l'ai résolu en ajoutant un attribut name à l'iframe identique à l'id de l'iframe:

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

Stupide, oui, mais c'est le firefox qui l'aime

0voto

Je veux juste ajouter que rien de ce qui précède n'a fonctionné pour moi. J'ai trouvé une raison supplémentaire qui a fait que ça marche. L'ajout de l'identifiant a été effectué, puis l'ajout d'un src = au cadre identique à celui de la page à afficher avec un?. Donc mon code est:

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

Ce qui résout le problème, ne s'ouvre plus dans une autre fenêtre de Firefox!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X