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

Mon problème est le suivant:

J'ai un formulaire qui doit être empêché d'actualiser la page sur laquelle il se trouve lorsqu'il est soumis. Pour lutter contre ce problème, j'ai utilisé un vide iframe comme le target pour le formulaire. Cela fonctionne exactement comme prévu dans Chrome (v12.0.742) mais échoue dans Firefox (v6.0).

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

j'ai trouvé certains  en relation  des postes, mais aucune ne répond à ma situation particulière et leurs solutions ne fonctionnent pas.

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

J'ai aussi essayé d'utiliser un frame par opposition à un iframe comme réponse à un sujet connexe était que l'utilisation iframes de cette manière est déconseillé. Mais les résultats sont identiques.

Également iframe est codé en dur dans la page dans le sens où il n'est pas ajouté dynamiquement avec JavaScript. Enfin, comme je l’ai dit plus tôt, cela fonctionne parfaitement dans Chrome, mais ne fonctionne pas du tout dans Firefox. IE n'est pas une préoccupation et toutes les solutions non-IE-friendly sont les bienvenues!


36
2017-08-16 18:43


origine


Réponses:


Cela peut sembler stupide, mais avez-vous essayé de donner à l'iframe un identifiant identique à l'attribut name? Cela semble résoudre certains problèmes liés 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>

74
2017-08-16 22:01



Pour ceux qui s’intéressent à cette question, notez que si vous avez au moins deux formulaires qui ciblent le même ID iframe, Firefox ouvrira un nouvel onglet sauf si les deux formulaires ont des noms différents. Curieusement, cela ne pose aucun problème dans Chrome. Ainsi, par exemple, cela ne fonctionnera 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 cela fonctionnera dans Chrome. Si vous voulez que le code fonctionne à la fois dans Chrome et Firefox, vous devez 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>

Je ne sais pas s'il s'agit d'un bogue ou si Firefox est simplement conçu de cette façon. Je travaille avec Firefox 18 (dernière version au moment de la rédaction de ce document) et cela pose toujours un problème.

J'espère que ceci aide quelqu'un d'autre; Je me suis gratté les dents pendant environ 2 heures avant de finalement comprendre quel était le problème.

À votre santé!


10
2018-01-11 01:50



ASTUCE: n'utilisez pas de majuscules dans id et name

Ne fonctionne pas

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

Travaux

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

C'était une telle surprise pour moi!


8
2018-02-20 12:53



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

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

Stupide, oui, mais c'est le firefox qui aime ça


4
2017-11-12 11:01



Cela peut sembler stupide et étrange, mais les prochaines étapes ont résolu mon problème (Firefox a ouvert un nouvel onglet lors de la soumission dans Iframe)

1) Utilisez la même valeur pour les attributs Iframe "id" et "name"

2) Ne pas utiliser les majuscules dans "id" ou "name" attribut de Iframe (myIframe => my_iframe)

3) Vérifiez l'attribut Iframe "src", cela ne fonctionnait pas pour moi quand il était "à propos de: vide", cet attribut devrait être supprimé comme je le vois


1
2018-02-09 10:23



Je veux juste ajouter, rien de ce qui précède n'a fonctionné pour moi. J'ai trouvé une raison supplémentaire pour que cela fonctionne. L'ajout de l'identifiant a été fait, puis l'ajout d'un src = au cadre qui correspond à la page qu'il va 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!


0
2018-05-22 20:30



Une autre variante de ce problème: j'avais le même problème et les suggestions "name" / "id" ne faisaient aucune différence. J'ai trouvé que pour moi, cela semble être un problème lié au domaine.

J'ouvre une page à http: //mypc/app/page.aspx, avec deux iframes (A et B).

iframe A ouvre une nouvelle fenêtre de navigateur pour http: //localhost/app/otherpage.aspx. otherpage.aspx a un formulaire qui cible iFrame B. Envoyer le formulaire ouvre une nouvelle fenêtre à la place.

Si je modifie iFrame A pour ouvrir la nouvelle fenêtre du navigateur http: //mypc/app/otherpage.aspx, puis soumettre le formulaire depuis otherpage.aspx affiche correctement le résultat dans iFrame B.

Ainsi, au moins dans Firefox 47.0, il semble empêcher les "ciblages" inter-domaines. IE11 ne semble pas avoir de problèmes de ce type (du moins entre localhost et le nom de la machine).


0
2018-06-15 05:52