Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# [Résolu] Lancer une fonction contenue dans mon iframe (XUL ! Pas HTML...)

Envoyé par : Raphael

Date : 17/06/2008 18:05

Bonjour, je dois dire que je sèche là, j'ai passé toutes le combinaisons possibles de syntaxe en parcourant le Forum et le Wiki...

Rappel des faits :

  • J'ai une fenêtre avec un menu, et une iframe contenant un fichier XUL
<iframe id="Iframe_0" src="chrome://ylifecore/content/modules/cardexplorer/cardexplorer.xul" type="content-primary" />
  • Depuis mon menu, je voudrais pouvoir lancer une fonction contenue dans mon fichier XUL situé dans mon iframe. J'ai essayé :
window.document.getElementById('Iframe_0').contentWindow.resetFilter();
document.getElementById('Iframe_0').contentWindow.resetFilter();
document.getElementById('Iframe_0').contentDocument.resetFilter();
etc...

resetFilter() est une fonction contenue dans cardexplorer_filter.js qui est chargée dans cardexplorer.js via :

var loader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"].getService(Components.interfaces.mozIJSSubScriptLoader);
loader.loadSubScript("chrome://ylifecore/content/modules/cardexplorer/libs/cardexplorer_filter.js");

Evidemment, cardexplorer.js est chargé depuis mon fichier XUL de mon iframe :

<script src="chrome://ylifecore/content/modules/cardexplorer/libs/cardexplorer.js" />

Et je n'arrive jamais à atteindre ma fonction, la console JS me retourne que ma fonction n'existe pas...

Est-ce que j'oublie quelque chose ?

Merci d'avance pour votre aide .

# Re: Lancer une fonction contenue dans mon iframe (XUL ! Pas HTML...)

Envoyé par : thefab

Date : 18/06/2008 09:30

Si on iframe est de type 'content-primary' tu devrais pouvoir y accéder directement avec .content, genre:

content.resetFilter()
content.document.resetFilter()
content.window.resetFilter()
...

# Re: Lancer une fonction contenue dans mon iframe (XUL ! Pas HTML...)

Envoyé par : Raphael

Date : 18/06/2008 12:12

Merci de la piste, j'ai essayé :

document.getElementById('Iframe_0').content.resetFilter();
document.getElementById('Iframe_0').content.document.resetFilter();
document.getElementById('Iframe_0').content.window.resetFilter();

Mais rien, n'y fait j'ai l'erreur :

Avertissement : reference to undefined property document.getElementById("Iframe_0").content
Fichier Source : chrome://ylife/content/yLife.xul
Ligne : 1
Erreur : document.getElementById("Iframe_0").content is undefined
Fichier Source : chrome://ylife/content/yLife.xul
Ligne : 1

Information supplémentaire, l'iframe et tout ce dont je parle est contenu dans un overlay qui se greffe à chrome://ylife/content/yLife.xul

Est-ce important ?

EDIT : En supprimant type="content-primary" et avec ''document.getElementById('Iframe_0').contentWindow.resetFilter(); '' et bien CA MARCHE !

Quelqu'un peut-il me dire à quoi sert ce type="content-primary" sur une iframe ? je l'ai toujours utilisé en prenant exemple sur le Wiki ou autres, mais sans trop savoir pourquoi ? Puis-je le supprimer en toute sérennité ? Quelles conséquences ?

# Re: Lancer une fonction contenue dans mon iframe (XUL ! Pas HTML...)

Envoyé par : thefab

Date : 18/06/2008 13:49

Avec 'content-primary' tu peux faire:

content.contentWindow.resetFilter();
content.resetFilter();
... ou autre chose ?

Sans le getElementById

Sans il faut faire:

document.getElementById('Iframe_0').contentWindow.resetFilter();

Je suppose

# Re: Lancer une fonction contenue dans mon iframe (XUL ! Pas HTML...)

Envoyé par : Raphael

Date : 18/06/2008 14:02

Ok, mais si j'ai plusieurs iframes, ça doit poser problème en fait non ? Moi, je dois pouvoir atteindre une certaine iframe (l'active en fait).

Je suppose que j'utilise donc content-primary à mauvais escient ? Si j'ai bien compris il ne doit y avoir qu'une unique iframe primary afin d'y accéder facilement à travers la syntaxe simplifiée content.resetFilter() ?

Je peux donc supprimer mes content-primary de toutes mes iframes, le comportement ne changera pas, et je pourrais accéder à chaque fonction d'une iframe comme je le veux ?

# Re: Lancer une fonction contenue dans mon iframe (XUL ! Pas HTML...)

Envoyé par : thefab

Date : 18/06/2008 14:23

Si j'ai bien compris il ne doit y avoir qu'une unique iframe primary afin d'y accéder facilement à travers la syntaxe simplifiée content.resetFilter() ?

Exactement

# Re: [Résolu] Lancer une fonction contenue dans mon iframe (XUL ! Pas HTML...)

Envoyé par : Raphael

Date : 18/06/2008 17:48

Ok, impeccable, problème résolu alors, merci beaucoup.

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.