Partage
  • Partager sur Facebook
  • Partager sur Twitter

innerHTML et javascript

    16 décembre 2010 à 15:57:42

    Salut à tous, j'ai un problème, j'explique, je ferais simple:
    J'ai une div avec un id.
    Et avec innerHTML je change le contenu de la div.
    Ok, mais si dans le contenu il y a du javascript, il ne sera pas exécuté.
    Si vous avez des idées, merci de m'en faire part.
    Merci d'avance :)
    • Partager sur Facebook
    • Partager sur Twitter
      16 décembre 2010 à 16:11:35

      Bijour,

      Heu, je vois pas pourquoi tu veux mettre du javascript dans ton div ...
      M'enfin même dans ce cas, tu n'a qu'à l'exécuter lors du changement du div.

      Un exemple avec ton code serais plus parlant et nous aiderez beaucoup !
      • Partager sur Facebook
      • Partager sur Twitter
        16 décembre 2010 à 16:15:32

        En fait je voulais faire simple.
        Mais mon probleme c'est que c'est avec XMLHttpRequest, donc je veux remplacer le contenu de la div par la réponse, mais le contenu se charge et pas le javascript.
        Voila c'est tout.
        • Partager sur Facebook
        • Partager sur Twitter
          16 décembre 2010 à 16:20:17

          D'accord mais met nous au moins un aperçu de ton code, et aussi dans la foulée le résultat que tu as.
          Je pense que tu as des problème d'echapement de caractère.

          Au passage, je me permet de te redemander : Pourquoi mettre du js dans un div ...
          • Partager sur Facebook
          • Partager sur Twitter
            16 décembre 2010 à 16:29:58

            Cette fois je vais faire plus complet.
            En fait je fais un site, qui utilise ajax pour changer le contenu.
            La j'ai ma page principale, et quand je clique sur un lien il charge la page dans la div contenu.
            Mais imaginons que la page chargée contienne des scripts, par exemple un script qui dit bonjour tout simplement.
            Eh ben le code javascript est chargé et il apparait dans le code généré mais il n'est pas exécute.
            Un p'tit code javascript

            function change_page(page)
            {
            	if(!page)
            	{
            	page = document.location;
            	}
            	xhr = getXMLHttpRequest();
            	xhr.onreadystatechange = function()
            	{
            		if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0))
            		{
            			document.getElementById('contenu').innerHTML = xhr.responseText;
            		}
            	}
            		
            	xhr.open('POST','change_page.php',true);
            	xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');
            	xhr.send('url='+page);
            	loadjs(page);
            }
            

            et le php
            <?php
            if(isset($_POST['url']) and !empty($_POST['url']))
            {
            $_POST['url'] = preg_replace('#(.+)\#\/(.+)#','$2',$_POST['url']);
            }
            if(isset($_POST['url']))
            {
            $allowed = array('accueil','contact','message','error','annonce');
            	if(in_array($_POST['url'],$allowed))
            	{
            		if(is_file($_POST['url'].'.php'))
            		{
            		include($_POST['url'].'.php');
            		}
            		else
            		{
            		include('error.php');
            		}
            	}
            	else
            	{
            	include('error.php');
            	}
            }
            else
            {
            include('accueil.php');
            }
            ?>
            
            • Partager sur Facebook
            • Partager sur Twitter
              16 décembre 2010 à 16:39:25

              Pas mal comme idée, en gros tu as remis les frames au gout du jour ^^

              Mais qu'est-ce que t'appelles exécuté ?
              Parce que si tu attend que tes onload fonctionne, ca rique pas.
              PAr contre je vois pas ce qui empeche les balises <script> de marcher.
              • Partager sur Facebook
              • Partager sur Twitter
                16 décembre 2010 à 16:50:09

                Wai j'aimais pas les iframes, non-W3c.
                Bref c'est pas des onload bien sur mais des scripts dans la balises script.
                Un exemple que tu peux tester en local.

                <input type="button" value="changer le contenu" onclick="document.getElementById('contenu').innerHTML = '<b>Code HTML</b><br/><span style=\'color:red\'>Code html</span><br/><script>alert(\'Code javascript\');</script>';">
                <fieldset>
                <legend>La div qui contiendra du code html et javascript :</legend>
                <div style="border:2px outset gray" id="contenu">
                <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
                </div>
                </fieldset>
                

                Copies/colles dans un document html et testes tu verra
                • Partager sur Facebook
                • Partager sur Twitter
                  16 décembre 2010 à 16:51:56

                  j'ai eu le même souci.
                  voila une fonction qui ferra ton bonheur :

                  function Get_Script( txt_){
                    var szScript = "<script[^>]*>([\\S\\s]*?)<\/script>";
                    var szReg    = new RegExp( szScript, 'img');
                    //-- Recup des scripts avec balises
                    var O_Script = txt_.match( szReg);
                    if( O_Script){
                      var szJs = "";
                      for(var i = 0; i < O_Script.length; i++){
                        szReg = new RegExp( szScript, 'im');
                        //-- Recup le contenu des scripts      
                        szJs += O_Script[i].match( szReg)[1];
                      }
                      try{
                        eval( szJs);
                      }catch(e){alert( e );}
                    }
                  }
                  


                  il suffit de lui passer xhr.reponseText en paramètre
                  • Partager sur Facebook
                  • Partager sur Twitter
                    16 décembre 2010 à 16:55:07

                    j'ai fait la même chose en php. j'ai réussi à récupérer tout les scripts de la page mais comment les intégrer à ma page ?
                    • Partager sur Facebook
                    • Partager sur Twitter
                      16 décembre 2010 à 17:07:55

                      Erf, d'après mes quelques petits tests, c'est tout simplement que comme ton js n'est pas chargé normalement, il n'est pas compilé.
                      Du coup il ne reconnais pas les fonctions...

                      Par contre, je suis désolé mais j'ai pas de solution pour toi.
                      Mis à part intégrer tous tes scripts des le départ.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        16 décembre 2010 à 17:11:24

                        j'y avais pensé mais en fait c'est la page qui génère du code javascript par rapport a la base de donnés.Sa ne marchera pas. je suis sur qu'il y a une solution. je trouverais surement.Si quelqu'un a encore des idées , il est le bienvenue.
                        • Partager sur Facebook
                        • Partager sur Twitter

                        innerHTML et javascript

                        × 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