Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > jQuery
jQuery Forum d'entraide sur le framework jQuery. Avant de poster : Tutoriels jQuery, FAQ jQuery, Tous les tutoriels JavaScript, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/10/2011, 20h05   #1
Invité de passage
 
Inscription : novembre 2008
Messages : 13
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 13
Points : 0
Points : 0
Par défaut Iframe et méthodes javascripts

Bonsoir,

Je suis en train de développer un espace de composition personnalisé. Pour cela, je crée une iframe (seule solution trouvée pour que l'héritage CSS soit cassé) en jQuery. Cet iframe charge une page qui contient du code javascript (l'environnement d'édition finalement). Je souhaite appeler une fonction javascript présente dans mon iframe à partir de l'extérieur ! Sauf, que je ne trouve pas de solution correcte pour faire ceci.

La meilleure que j'ai trouvée pour le moment fonctionne mais déclenche une erreur qui empêche la poursuite du code javascript.

Voici le code intéressant :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
var espaceComposition = $("textarea.composition");
espaceComposition.after("<iframe class=\"previsualisation\" src=\"pageDeComposition.php\"></iframe>");
var espacePrevisualisation = $("iframe.previsualisation");
espacePrevisualisation.load(function(){
	var head ="<link rel=\"stylesheet\" media=\"screen\" href=\"fichier1.css\"/>";
	head +="\n<link rel=\"stylesheet\" media=\"screen\" href=\"fichier2.css\"/>";
	$(this).contents().find("head").append(head);
	$(this).contents().find("body").append("<div class=\"composition\">"+espaceComposition.val()+"</div>");
	this.contentWindow.initialiserComposition(); // La ligne incriminée !
});
espacePrevisualisation.load();
Votre aide me sera grandement utile !

Merci.

PS: Je n'ai pas une très grande maitrise du Javascript.
tadaa9 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2011, 00h00   #2
Rédacteur
 
Avatar de danielhagnoul
 
Homme Daniel Hagnoul
Étudiant perpétuel
Inscription : février 2009
Messages : 3 221
Détails du profil
Informations personnelles :
Nom : Homme Daniel Hagnoul
Âge : 61
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant perpétuel
Secteur : Enseignement

Informations forums :
Inscription : février 2009
Messages : 3 221
Points : 6 767
Points : 6 767
Bonsoir

Voir : http://www.developpez.net/forums/d86...e/#post4917586
__________________

FAQ jQuery

Mon cahier d’exercices sur jQuery & Co

Si un message vous a aidé ou vous semble pertinent, votez pour lui !
danielhagnoul est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2011, 08h40   #3
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 055
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 055
Points : 45 173
Points : 45 173
Bonjour,

hormis le souci d'instanciation soulevé par Daniel, tu trouveras dasn le lien joint beaucoup d'informations sur les conversations mère / fille
http://www.developpez.net/forums/d27...enetre-enfant/
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2011, 19h58   #4
Invité de passage
 
Inscription : novembre 2008
Messages : 13
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 13
Points : 0
Points : 0
Bonsoir,

D'abord : merci pour vos réponses.

danielhagnoul : je suis allé voir mais je ne comprend pas bien le rapport excepté le fait que la personne ajoutait une iframe de manière dynamique. En effet : ma méthode existe déjà dans le document chargé, je ne l'ajoute pas à la volé. En fait, on peut simplifier mon problème :

Code :
1
2
3
4
5
6
7
var espaceComposition = $("textarea.composition");
espaceComposition.after("<iframe class=\"previsualisation\" src=\"pageDeComposition.php\"></iframe>");
var espacePrevisualisation = $("iframe.previsualisation");
espacePrevisualisation.load(function(){
	this.contentWindow.initialiserComposition(); // La ligne incriminée !
});
espacePrevisualisation.load();
La je dit bien ?
- Je créait une iframe.
- Après avoir chargé la page dans l'iframe, tu m'appelle la fonction javascript initialiserComposition.
- Je charge !

Le pire, c'est que la fonction est bien exécutée ! Mais Chrome m'indique une erreur qui empêche la suite de l'execution de mon script Javascript :
Uncaught TypeError: Object [object DOMWindow] has no method 'initialiserComposition'.


SpaceFrog : en regardant le code du cas numéro 3, j'ai trouvé ceci :
Code :
window.frames["maFrame"].affiche();
qui est la solution.

Sauf que moi, en jQuery : j'ai au choix $(this) et this ! Quel serait l'équivalent en jQuery de la ligne du dessus ? Car je pense qu'il est là le problème !

Merci.
tadaa9 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h05.


 
 
 
 
Partenaires

Hébergement Web