Envoyé par : vic
Date : 27/09/2004 13:31
Bonjour à tous,
je vous fais part d'un petit souci que j'ai eu : lorsque l'on a une Iframe dans un fichier Xul qu'on appelle directement dans son navigateur, onload est appelée deux fois alors que lorsqu'on appelle cette même page comme application chrome (via firefox -chrome etc.), il n'est appelé qu'une fois.
Je vous donne un exemple : voici le fichier test.xul
<?xml version="1.0"?> <window id="test" title="test" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" width="720px" height="500px" onload="initialisation();"> <script type="application/x-javascript" src="test.js"/> <iframe src="http://www.xulfr.org" id="cadre" flex="1"/> <button label="suivant" oncommand="suivant();"/> </window>
et le fichier javascript test.js correspondant :
var liens = new Array(); liens[0] = "http://frenchmozilla.sourceforge.net"; liens[1] = "http://www.xulplanet.com"; liens[2] = "http://www.mozilla.org"; liens[3] = "http://xulplanet.com/tutorials/xulapp/"; var position = 0; function initialisation() { alert("initialisation"); } function suivant() { document.getElementById("cadre").setAttribute("src",liens[position]); position++; }
La fonction initialisation() affiche simplement un message d'alerte, le bouton suivant permet d'aller de page en page. Vous verrez que sous Firefox (testé sur 0.9.1, 1.0PR et Mozilla 1.6) le message d'alerte apparaît deux fois au début et à chaque chargement de page
Voilà, je vous signale ça parce que je me suis arraché les cheveux pour comprendre pourquoi mon application marchait en application et pas en XUL direct. Cela peut être très gênant si on fait un certain nombre de manipulations à l'appel de "onload' Pour résoudre ça, j'ai mis une variable booléenne afin que le corps de ma fonction d'initialisation ne soit accessible qu'une fois.
var initialisationfaite = false; function initialisation() { if (!initialisationfaite) { ... initialisationfaite = true; } }
Envoyé par : Utilisateur anonyme
Date : 27/09/2004 20:56
Je te confirme le problème. J'utilise une variable booléenne pour tester si deuxième onload. Alban
Envoyé par : vic
Date : 28/09/2004 17:11
Alors, on doit considérer ça comme un bogue ou une caractéristique du programme ?
Envoyé par : Utilisateur anonyme
Date : 28/09/2004 20:12
Comme une caractéristique ! J'avais évoqué ce problème sur le forum de xulplanet.com
Alban
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.