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 :calim2: ...
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:
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:
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:
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 ? :oops:
merci d'avance :P
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. :aie:
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. ;)