PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Autres forums > Forum Programmation & Conception > fr.comp.lang.javascript > js dans iframe
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
js dans iframe

Réponse
 
LinkBack Outils de la discussion
Vieux 28/06/2007, 23h27   #1
Olivier Masson
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut js dans iframe

Bonjour,

j'ouvre une page edition.php dans une page à l'aide d'une iframe, au
moyen de mootools.

La page qui apparait doit exécuter du javascript dès son lancement (cad
son apparition dans ce cas) :

document.forms[0].ville.options[<?php echo $selected1 ?>].selected = true;
ajout(document.forms[0].ville.options[<?php echo $selected1
?>].value,'categorie');
document.forms[0].categorie.options[<?php echo $selected2 ?>].selected =
true;

La fonction ajout() est lu dans la page maitre et est donc bien reconnue
(par exemple si je la place dans un onChange).
Par contre, pas moyen d'executer ces 3 lignes à l'apparition de l'iframe
: le js dans l'entete du fichier edition.php est zappé (j'ai testé en
faisant des erreurs de syntaxe, qui ne sont pas détectées) et si je
place le code js directement dans le body de edition.php, même problème
(le js n'est même pas lu par le navigateur puisqu'il ne détecte pas, là
non plus, l'erreur de syntaxe).

Alors comment puis-je executer ces 3 lignes de JS à l'affichage de cette
page en "pop-up" iframe ? Sachant, et c'est la le problème, que les
valeurs $selected1 et 2 sont données par edition.php.

Hum... si une personne a compris, bravo et merci.
  Réponse avec citation
Vieux 29/06/2007, 09h11   #2
Olivier Masson
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: js dans iframe

Olivier Masson a écrit :
> Bonjour,
>
> j'ouvre une page edition.php dans une page à l'aide d'une iframe, au
> moyen de mootools.
>
> La page qui apparait doit exécuter du javascript dès son lancement (cad
> son apparition dans ce cas) :
>
> document.forms[0].ville.options[<?php echo $selected1 ?>].selected = true;
> ajout(document.forms[0].ville.options[<?php echo $selected1
> ?>].value,'categorie');
> document.forms[0].categorie.options[<?php echo $selected2 ?>].selected =
> true;
>
> La fonction ajout() est lu dans la page maitre et est donc bien reconnue
> (par exemple si je la place dans un onChange).
> Par contre, pas moyen d'executer ces 3 lignes à l'apparition de l'iframe
> : le js dans l'entete du fichier edition.php est zappé (j'ai testé en
> faisant des erreurs de syntaxe, qui ne sont pas détectées) et si je
> place le code js directement dans le body de edition.php, même problème
> (le js n'est même pas lu par le navigateur puisqu'il ne détecte pas, là
> non plus, l'erreur de syntaxe).
>
> Alors comment puis-je executer ces 3 lignes de JS à l'affichage de cette
> page en "pop-up" iframe ? Sachant, et c'est la le problème, que les
> valeurs $selected1 et 2 sont données par edition.php.
>
> Hum... si une personne a compris, bravo et merci.


C'est pas brillant niveau réponse
J'ai trouvé un truc bien moche : je mets un onLoad sur un gif
transparent de 1x1 (beurk, comme les vieux spacer immondes à la
Photoshop) et dans cet onLoad, je n'appelle pas ma fonction puisqu'elle
n'est pas vu (quelle soit dans le header ou dans le body) mais je mets
directement le code. Et ça marche.

Si vous avez une plus jolis solution...
  Réponse avec citation
Vieux 30/06/2007, 11h20   #3
Olivier Masson
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: js dans iframe

O.L. a écrit :

> Je serais curieux de voir comment tu ouvres ton IFRAME ? Toute cette
> histoire de code JS qui ne s'exécute pas est quand même bizarre.
>


J'utilise le plugin Smoothbox pour Mootools :
http://gueschla.com/2007/03/17/smoot...pour-mootools/

Mais je changerai de solution je pense parce que l'iframe, c'est
vraiment puant.
Je parle pas niveau mise en page, puisque ça fait 30 ans (au moins !)
que je l'utilise plus, mais même en ajax, ça rend pas forcément les
choses plus simple, la preuve

> Sinon ton code m'intrigue un peu :
>>> ajout(document.forms[0].ville.options[<?php echo $selected1
>>> ?>].value,'categorie');

> Si c'est dans l'IFRAME que ça s'exécute, et que ajout() est définie dans
> la fenêtre parente, je ne vois pas comment ce code peut marcher ...
> perso j'aurais mis :
> window.parent.ajout(document.forms[0].ville.options[<?php echo
> $selected1 ?>].value,'categorie');
>
> Et pareil pour ton document.forms[0], es tu sûr qu'il est dans l'IFRAME ?
>


Oui, et ça fonctionne.
Je ne comprends pas non plus. Surtout pourquoi le JS placé dans l'iframe
n'est absolument pas utilisé.
Raisons pour lesquelles j'abandonnerai iframe (et donc smoothbox)
prochainement.
Mais ce sont mes premiers pas en ajax et comme je n'y comprends rien,
j'avance doucement.

> Et sinon, es tu sûr sûr sûr que l'affichage des erreurs JS est bien
> activé ?
>


Bien sûr, sinon j'aurais sacrément galéré.
Et j'utilise bcp le "code source généré" de WebDevelopper.
Il n'y a quel le DOM Inspector dont je n'arrive pas trop à me servir encore.
  Réponse avec citation
Vieux 30/06/2007, 14h03   #4
ASM
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: js dans iframe

Olivier Masson a écrit :
> Bonjour,
>
> j'ouvre une page edition.php dans une page à l'aide d'une iframe,


Là ça veut rien dire ...

Tu veux sans doute dire que tu ouvres 'edition.php' dans une iframe ?

> au moyen de mootools.


Aye !

> La page qui apparait doit exécuter du javascript dès son lancement (cad
> son apparition dans ce cas) :


et comment est-ce lancé ? (le code de lancement ?)

> document.forms[0].ville.options[<?php echo $selected1 ?>].selected = true;


et pourquoi pas simplement :
document.forms[0].ville.selectedIndex = <?= $selected1 ?>;

> ajout(document.forms[0].ville.options[<?php echo $selected1
> ?>].value,'categorie');
> document.forms[0].categorie.options[<?php echo $selected2 ?>].selected =
> true;
>
> La fonction ajout() est lu dans la page maitre et est donc bien reconnue


Alors, avec le code que tu indiques,
ajout(blabla)
elle ne devrait pas être lancée (depuis l'iframe) !
Normalement la console de FF devrait dire que 'ajout' est inconnu
.... sauf à ce que tu aies *aussi* une variable ou fonction 'ajout' dans
le JS de 'edition.php' ... ? !

Depuis 'edition.php' ouverte dans l'iframe, son JS devrait être :
parent.ajout(parent.monIframe.document.forms[0] ... blabla);
si l'iframe a un nom (ici : 'monIframe')


> (par exemple si je la place dans un onChange).


et il est où ce onchange ? iframe ? page principale ?

> Par contre, pas moyen d'executer ces 3 lignes à l'apparition de l'iframe
> : le js dans l'entete du fichier edition.php est zappé (j'ai testé en
> faisant des erreurs de syntaxe, qui ne sont pas détectées) et si je
> place le code js directement dans le body de edition.php, même problème
> (le js n'est même pas lu par le navigateur puisqu'il ne détecte pas, là
> non plus, l'erreur de syntaxe).


mets-y au moins une simple alert('vu') pour voir à voir ...
(et au début du JS et à la fin)

FF t'ouvre le code-source de cet iframe ?
et tout y est OK ? le JS étoussa ...

> Hum... si une personne a compris, bravo et merci.


Tout ça à vue de nez n'est que du bête JS qui n'a aucun besoin d'Ajax ni
de biblis ...


Depui une frame ou iframe :
- accéder à une fonction de la pagee principale :
parent.mafonction();
- accéder à une fonction de la page chargée dans le cadre :
mafonction();

Depuis la page principale :
- accéder à une fonction de la pagee principale :
mafonction();
- accéder à une fonction de la page chargée dans le cadre :
- si l'iframe a un nom :
parent.monIframe.mafonction();
- si elle n'a pas de nom :
parent.frames[0].mafonction();
- si l'iframe a un id :
document.getElementById('monIframe').mafonction();
... ne fonctionne pas ... !



--
Stephane Moriaux et son (moins) vieux Mac
  Réponse avec citation
Vieux 30/06/2007, 14h07   #5
ASM
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: js dans iframe

Olivier Masson a écrit :
> J'ai trouvé un truc bien moche : je mets un onLoad sur un gif
> transparent de 1x1 (beurk, comme les vieux spacer immondes à la
> Photoshop) et dans cet onLoad, je n'appelle pas ma fonction puisqu'elle
> n'est pas vu (quelle soit dans le header ou dans le body)


Là y a un shisme !
Il n'y a aucune raison que ça ne fonctionne pas ... sauf à avoir fait
une erreur de code ... ? ! ? !

on peut voir le code de ce 'edition.php' ?
au moins un copié-collé du head

il doit il y avoir une coquille qui t'échappe.

--
Stephane Moriaux et son (moins) vieux Mac
  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 05h23.


Édité par : vBulletin® version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,12671 seconds with 13 queries