Partage
  • Partager sur Facebook
  • Partager sur Twitter

iframe et onkeyup

Sujet résolu
    27 juillet 2009 à 11:33:15

    Bonjour à tous!
    j'aimerai écrire dans un iframe (jusque là ça marche :) ) et que lors de la saisie du texte, il me colore les balises HTML.
    Mon problème est qu'apparemment, on ne peut associer un "onkeyup" à un ifram :( .
    Pour plus de clarté, voici le code que j'ai essayé en vain:
    <title>Ecrire dans un iframe</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <script>
    function detecteur()
    	{
    		alert("Vous avez ecrit dans un iframe... cool!!");
    	}
    </script>
    </head>
    <body onload="frames['monIframe'].document.designMode='On'">
    <iframe name="monIframe" onkeyup="detecteur"></iframe>
    </body>
    </html>
    

    Qulequ'un aurait il une idée à me proposer? Notez bien que je début en js :D
    • Partager sur Facebook
    • Partager sur Twitter
      27 juillet 2009 à 12:18:51

      onkeyup="detecteur();" ?
      :lol:
      • Partager sur Facebook
      • Partager sur Twitter
        27 juillet 2009 à 12:28:48

        Bien vu pour la petite faute de frappe birdy42(applause!)
        Mais.... ça ne fonctionne toujours pas :(
        • Partager sur Facebook
        • Partager sur Twitter
          27 juillet 2009 à 12:50:23

          if (document.addEventListener) {
              frames['monIframe'].contentWindow.document.addEventListener("keyup", detecteur, true);
            } else if (document.attachEvent) {
              frames['monIframe'].contentWindow.document.attachEvent("onkeyup", detecteur);
            }
          
          • Partager sur Facebook
          • Partager sur Twitter
            27 juillet 2009 à 13:01:12

            :euh: il voulait un onkeyup?
            (et en fait ça marche pas)
            • Partager sur Facebook
            • Partager sur Twitter
              27 juillet 2009 à 13:26:07

              Merci pour votre aide mais là je sens que je ne suis pas encore de niveau. J'ai essayé d'intégrer le code de que Kirby a laissé:
              <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
              <html>
              <head>
              <title>Ecrire dans un iframe</title>
              <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
              <script>
              function initialise_page()
              {
              	frames['monIframe'].document.designMode='On';
              	if (document.addEventListener)
              	{
              		frames['monIframe'].contentWindow.document.addEventListener("keypress", detecteur, true);
              	} 
              	else if (document.attachEvent)
              	{
              		frames['monIframe'].contentWindow.document.attachEvent("click", detecteur, true);
              	}
              }
              function detecteur()
              {
              	alert("Vous avez ecrit dans un iframe... cool!!");
              }
              </script>
              </head>
              <body onload="initialise_page();">
              <iframe name="monIframe"></iframe>
              </body>
              </html>
              

              Mais sans succès...
              Dans la console d'erreur j'ai le texte suivant:"frames.monIframe.contentWindow is undefined"
              Ai je oublié quelque chose?
              • Partager sur Facebook
              • Partager sur Twitter
                27 juillet 2009 à 13:50:54

                Citation : birdy42

                :euh: il voulait un onkeyup?


                Oui, erreur de copier/coller ^^'

                Citation : birdy42

                (et en fait ça marche pas)


                Sisi, la preuve :
                <!DOCTYPE html>
                <html>
                <head>
                <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
                <title>Page de test HTML/JS</title>
                </head>
                <body>
                
                <iframe id="test"></iframe>
                
                <script type="text/javascript">
                function init(){
                	var iframe=document.getElementById('test');
                	iframe.contentWindow.document.designMode="on";
                	if(document.addEventListener){
                		iframe.contentWindow.document.addEventListener("keyup",detecteur,true);
                	}else if(document.attachEvent) {
                		iframe.contentWindow.document.attachEvent("onkeyup",detecteur);
                	}
                }
                function detecteur(){
                	alert("Vous avez ecrit dans un iframe... cool!!");
                }
                window.onload=init;
                </script>
                </body>
                </html>
                

                Testé sous FF3.5 et IE6
                • Partager sur Facebook
                • Partager sur Twitter
                  27 juillet 2009 à 13:57:21

                  En fait, dans ton premier test, tu avais mis :
                  else if(document.attachEvent) {
                  		iframe.contentWindow.document.attachEvent("click",detecteur);
                  	}
                  


                  du coup, j'ai (bêtement) changé simplement le "click" en "keyup"
                  et effectivement ça marchait pas (sur FF3.5) mais ça aurait sûrement marché sur IE...
                  pourquoi on doit passer par attachEvent / addeventlistener cette fois en fait ?
                  EDIT: @@rtur : pense à mettre le <script > juste avant le </body> ça pose moins de soucis ;)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    27 juillet 2009 à 13:58:19

                    Yessss! Ca roule comme sur des roulettes :D
                    Merci pour votre aide
                    A+
                    • Partager sur Facebook
                    • Partager sur Twitter
                      27 juillet 2009 à 14:25:06

                      Normalement c'est plus "propre" de passer par attachEvent/addEventListener, je l'ai pas fait pour le window par simple flemme, j'irai me faire fouetter.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        27 juillet 2009 à 15:03:07

                        :lol: ...
                        Pense à mettre ton sujet en résolu à l'aide du lien en bas de page ;)
                        • Partager sur Facebook
                        • Partager sur Twitter

                        iframe et onkeyup

                        × 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