Partage
  • Partager sur Facebook
  • Partager sur Twitter

Execution d'une fonction avec iframe

Sujet résolu
    20 décembre 2005 à 11:23:54

    Bonjour !

    Je voudrais envoyer un formulaire en javascript à partir de ma page mais le formulaire est situé dans une iframe. Ducoup, quand je clique sur mon bouton, il me dit que le formulaire n'existe pas...
    Ma page principale ressemble à ça :
    <iframe name="Myiframe"src="mapage.html"></iframe>
    <input type="button" value="Envoyer formulaire" onclick="window.document.Myform.submit()" />

    La page mapage.html à ça :
    <form target="_blank" name="Myform">
     <input type="hidden" name="thename" value="thevalue" />
    </form>


    J'ai également essayé avec document.Myiframe.Myform.submit() mais sans succès (il ne trouve pas l'élément : Valeur NULL ou n'est pas un objet).

    Voila, donc si vous avez une idée merci de m'aider :)
    • Partager sur Facebook
    • Partager sur Twitter
      20 décembre 2005 à 12:36:26

      Bonjour, Essaye :
      Dans le header :
      function sub_form(nom){
        var iframes = document.getElementsByTagName('iframe');
        for (var i = 0; i < iframes.length; i++){
          if(iframes[i].getAttribute('name') == nom){
            iframe = iframe[i];
            break;
          }
        }
        if(iframe != undefined)
          document.iframe.contentDocument.forms['Myform'].submit();
      }

      Et en html :
      <iframe name="Myiframe"src="mapage.html"></iframe>
      <input type="button" value="Envoyer formulaire" onclick="sub_form('Myiframe')" />

      et le formulaire dans l'iframe :
      <form target="_blank" name="Myform">
       <input type="hidden" name="thename" value="thevalue" />
      </form>

      Ce code ne marche pas sous ie (sûr) et peut être que ça ne amrche pas tout cours :p
      Tu devrais trouver une autre solution :)


      Bisous, Nyu
      • Partager sur Facebook
      • Partager sur Twitter
        20 décembre 2005 à 18:06:40

        Ta fonction peut être très facilement rendue compatible avec IE :
        function sub_form(nom){
          var iframes = window.frames;
          for (var i = 0; i < iframes.length; i++){
            if(iframes[i].name == nom){
              iframe = iframes[i];
              break;
            }
          }
         
          if(iframe != undefined)
            iframe.document.forms['Myform'].submit();
        }


        Fonctionne sous IE et Firefox.
        • Partager sur Facebook
        • Partager sur Twitter
          20 décembre 2005 à 19:08:30

          Non, ça, ça marche pas et c'est sûr.
          On n'accède pas aux objets d'une iframe comme ça.
          Il faut la propriété DOM core contentDocument qui ne marche pas sous ie.
          Sinon, ça serais trop facil :p


          Bisous, Nyu


          PS: getElementsByTagName marche sous ie, alors...
          • Partager sur Facebook
          • Partager sur Twitter
            21 décembre 2005 à 0:14:50

            lol ...

            En effet ça ne marche pas et, j'ai comtinué à chercher là en rentrant et j'ai trouvé !
            Tout bêtement : Myiframe.document.Myform.submit() ^^

            Oui... c'est vraiment très con et je suis désolé pour ceux à qui j'ai fais chercher :euh:
            ( J'ai trouvé ça ici : SELFHTML et ça marche sous IE et FF :) )

            Donc merci quand même ;)

            PS : J'ai trouvé encore mieux : "function top.Myfunction()" mais ne marche que sous IE... si quelqu'un trouve comment faire sur FF qu'il prévienne ça m'arrangerai beaucoup ! Merci :p
            • Partager sur Facebook
            • Partager sur Twitter
              21 décembre 2005 à 1:38:25

              J'y comprends rien, le code que j'ai posté fonctionne très bien chez moi :D

              Je l'ai testé sous IE et Firefox avant de le proposer :p (je viens même de tester sur un autre ordinateur, ça fonctionne aussi... ) C'est bizarre...

              Ca vient peut être du html bien que j'utilise les morceaux du premier post :
              <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
              <html>
                <head>
                <meta http-equiv="content-type" content="text/html; charset=windows-1250">
                <meta name="generator" content="PSPad editor, www.pspad.com">
                <title></title>
                <script type="text/javascript">
                function sub_form(nom){
                var iframes = window.frames;
                for (var i = 0; i < iframes.length; i++){
                  if(iframes[i].name == nom){
                    iframe = iframes[i];
                    break;
                  }
                }
               
                if(iframe != undefined)
                  iframe.document.forms['Myform'].submit();
              }
              </script>

                </head>
                <body>
                <div>
              <iframe name="Myiframe" src="js-iframe-form-mapage.html"></iframe>
              <input type="button" value="Envoyer formulaire" onclick="sub_form('Myiframe')" />
              </div>
                </body>
              </html>


              et :
              <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
              <html>
                <head>
                <meta http-equiv="content-type" content="text/html; charset=windows-1250">
                <meta name="generator" content="PSPad editor, www.pspad.com">
                <title></title>
                </head>
                <body>
                <div>
              <form target="_blank" name="Myform" action="js-iframe-form-mapage.html">
               <input type="hidden" name="thename" value="thevalue" />
              </form></div>
                </body>
              </html>


              Désolé de polluer un topic résolu mais ça m'intrigue...

              A+
              • Partager sur Facebook
              • Partager sur Twitter

              Execution d'une fonction avec iframe

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown