[RESOLU] Iframe automatique

Eléphant du PHP | 418 Messages

21 nov. 2013, 03:25

Ca fonctionne comme ça

dans le body de ma page index de la boutique j'ai mit le " parent.test_alert(); "
et dans la page de l'iframe (soit boutique.php) j'ai mit la fonction.

Lors du chargement de la boutique j'obtiens bien un alerte.

Ensuite?

ViPHP
xTG
ViPHP | 7331 Messages

21 nov. 2013, 08:38

C'est ton index qui contient la balise <iframe> et qui inclue donc dedans boutique.php ? (histoire que je sois sûr)
Si c'est le cas c'est l'inverse qu'il faut faire pour le code.
parent.test_alert() doit aller dans boutique.php sur son onload.
Et la fonction dans ton index.

Si je me fourvoie on peut donc continuer en remplaçant notre fonction de test par la fonction de redimensionnement.
Dans un premier temps en supprimant le if du onload qui était prévu et placer un alert() dans la fonction appelée.

Eléphant du PHP | 418 Messages

21 nov. 2013, 16:32

Non, l'index et celui de la boutique normale : voir ici

Boutique.php est celui qui contient l'iframe : voir ici

Je fait ce que tu m'a dit plus haut? à savoir remettre la fonction et l'alerte dans le onload?

Merci beaucoup

Cordialement

ViPHP
xTG
ViPHP | 7331 Messages

21 nov. 2013, 18:59

Okay donc c'est bien !
L'appel fonctionne bien.

Donc maintenant la dernière étape (et pas la moindre) on va appeler la fonction de redimensionnement. :)
Et places un alert explicite dans chacun des cas possibles (if..else) ainsi qu'en début et fin de fonction pour tester le tout.
Ou bien tu peux utiliser console.log("ton texte") à la place du alert si tu ne veux pas déranger les visiteurs vu que tu es sur ton serveur de production.
Le console.log va au lieu d'ouvrir une popup de texte écrire dans la console de ton navigateur (firefox ou chrome) que tu peux trouver respectivement dans les outils de développement.

Avec ces affichages tu pourras tester l'exécution du code, voir si tu passes dans un if, son else ou bien nulle part.
Et si tu passes bien quelque part si le code de redimensionnement affecte bien ton iframe.

Eléphant du PHP | 418 Messages

22 nov. 2013, 00:17

Voici ce que j'ai fait

[javascript] function adjustIFrameSize(iframeWindow) {
alert('ok0');
if (iframeWindow.document.height)
{
alert('ok1');
}
else if (document.all)
{
var iframeElement = document.all[iframeWindow.name];
if (iframeWindow.document.compatMode && iframeWindow.document.compatMode != 'BackCompat')
{
alert('ok2');
}
else
{
alert('ok3');
}
alert('ok4');
}
}[/javascript]

J’obtiens l'alerte 0.

Merci beaucoup

Cordialement

ViPHP
xTG
ViPHP | 7331 Messages

25 nov. 2013, 20:43

Donc le code ne s'exécute pas pour cet algorithme.
Je viens de tester avec Firefox et IE et effectivement le code ne fonctionne pas (ne rentre pas dans les conditions).

Je suis donc reparti from scratch histoire de converger vers une solution qui fonctionne.
[javascript]var h = document.getElementById("iframeName");
console.log(h);
console.log(h.ownerDocument.body.clientHeight);
h.height = h.ownerDocument.body.clientHeight;[/javascript]
Ce script (que tu peux mettre à la place du contenu de la fonction précédente) permet de redimensionner la hauteur de ton iframe (pour peu que tu ne changes pas son id).
Testé et approuvé pour Firefox, aucune idée par contre pour les autres navigateurs.
Mais on peut déjà partir sur cette ébauche pour converger sur ce qu'il te faut avant de penser à interopérabilité.

Eléphant du PHP | 418 Messages

25 nov. 2013, 23:32

ça fonctionne nikel, après faut tester plus en profondeur mais bon.

Je clôture pas de suite le sujet au cas où, mais en tout cas merci beaucoup

Cordialement