IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

iFrame <-> parent - getElementById('').innerHTML et PHP


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2
    Par défaut iFrame <-> parent - getElementById('').innerHTML et PHP
    Bonjour à tous,

    Je cherche à résoudre un problème de ciblage d'une fonction javascript qui pourra peut-être paraître anodin aux yeux de certains mais moi j'y arrive pas ...

    1. J'ai une page HTML "index.html" dans laquelle se situe un texte à modifier qui fait office de Titre pour l'iFrame qu'elle contient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <head>
    <script language="javascript" src="show_layer.js"></script>
    <style type="text/css">
    <!--
    function changeText(leNom){
    document.getElementById('titre').innerHTML=leNom;
    }
    //-->
    </script>
    </head>
    <body>
    <strong><span class="century" id="titre">HOME</span></strong><br />
    <iframe src="home.php" width="1000" height="558" scrolling="Auto" frameborder="0" name="Contenu" id="Contenu"> </iframe><br />
    </body>
    2. Mon iFrame contient en fait une galerie d'aperçu en PHP "home.php" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <?php
    $path = "../".basename(dirname(__FILE__));
    $dir_handle = @opendir($path) or die("Unable to open $path");
    list_dir($dir_handle,$path);
    function list_dir($dir_handle,$path) {
        while (false !== ($file = readdir($dir_handle))) {
            $dir =$path.'/'.$file;
            if(is_dir($dir) && $file != '.' && $file !='..' )
            {
                $handle = @opendir($dir) or die("undable to open file $file");
                list_dir($handle, $dir);
            }elseif($file != '.' && $file !='..')
            {
                    if (substr($file,-5)=="1.jpg") {
                  $noum = substr($path,11); //ici $noum devient en fait le nom de la série dont on va afficher l'image 1.jpg
                  echo "<a href='#' onclick='javascript:parent.changeText($noum);return false;'>$noum</a>";// c'est ça ???
                  echo "<a href='#' javascript:parent.document.getElementById('titre').innerHTML='lala');>$noum</a>";// ou bien ça ???
                   echo "<td><a href='$path/serie.php'><img src='$path/$file' height=20%></a></td>";// là j'affiche l'aperçu avec comme lien la série en question
                    }
            }
        }
        closedir($dir_handle);
    }
    ?>
    NB : j'ai dans ma page index.html une animation flash dans laquelle se trouve un bouton avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    on (release) {
    	_root.getURL("javascript:changeText('Texte d'exemple')");
    }
    ... et celà fonctionne

    Par contre à partir de l'iFrame ça ne fonctionne pas... avez vous une idée de mon erreur ?

    merci d'avance

  2. #2
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Salut,

    Je crois que tu a oublié les guillemets autour de ta chaine...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<a href='#' onclick='javascript:parent.changeText(\"$noum\");return false;'>$noum</a>";// c'est ça ???
    ERE

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2
    Par défaut Merci :)
    Merci beaucoup c'était tout à fait ça...

    par contre je n'arrive maintenant pas à combiner les deux liens

    À savoir celui qui modifie le Titre et celui qui charge la série...
    J'ai tenté en écrivant ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<td> <a href='$path/serie.php' onclick='javascript:parent.changeText(\"$noum\");return false;'><img src='$path/$file' height=20%></a></td>";
    J'ai pas non plus bien compris pourquoi il fallais mettre \" mais dukou j'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<td> <a href='\"$path\"/serie.php' onclick='javascript:parent.changeText(\"$noum\");return false;'><img src='$path/$file' height=20%></a></td>";
    Mais là pareil... le onclick fonctionne bien mais le lien ne fonctionne plus

    ----- Finalement c'est Bon ------

    voici le code qui fonctionne au final :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<td> <a href='$path/serie.php' onclick='javascript:parent.changeText(\"$noum\")';return false;'><img src='$path/$file' height=20%></a></td>";

  4. #4
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut Kot kot kotkot kot kot koooooodaaaaaaaaak
    Bonjour,

    Le problème arrive fréquemment en passant par PhP et en jouant avec des fonction Javascript. Votre echo commence par des guillements (" ") puis dans votre HTML, vous devez également préciser des chaines de caractères. Vu que les guillements sont déjà ouverts, vous prenez les quotes (' '). Seulement, dans vos quotes, vous devez mettre des chaines de caratères pour le Javascript car son paramètre est une chaine de caractères. Problème. Les guillemets et les quotes sont tous les deux ouverts. Si vous en utilisez un ou l'autre pour votre paramètre, cela va fermer soit votre HTML, soit votre echo.

    Le backslash (\) permet d'échapper le caractère qui le suit. Ca veut dire que lors du parsing PhP, le " qui suit le \ ne sera pas pris comme la fin du echo mais comme un caractère normal. Ce caractère normal sera alors considéré comme le début d'une chaine de caractères par le parseur HTML.

    Notez que c'est bien " ' \" ' " et non " ' \' ' " sinon, lors du parsing HTML, il y aura fermeture du HTML alors que vous vouliez en fait ouvrir le paramètre Javascript. Pensez à bien alterner.

Discussions similaires

  1. innerhtml avec PHP
    Par mimiche_fr2000 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 05/02/2008, 12h00
  2. [DOM] getElementById + innerHTML avec IE
    Par polemoss dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 10/01/2008, 12h55
  3. erreur getElementbyId().innerhtml sous ie4
    Par topprof dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 05/10/2006, 17h23
  4. iframe et document parent
    Par Trunks dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 31/12/2005, 12h29
  5. getelementbyid innerhtml sur Opera?
    Par cynthia dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 31/12/2004, 10h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo