Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# Petit détail de débutant

Envoyé par : Kerrozen

Date : 08/12/2005 13:31

Alors voilà : moi je ne suis qu'un débuant d'hier et jusqu'aux évènements, pas de problème.

Mais là, il m'a fallut déclarer mon fichier ".js" associé à mon code. Or surprise : j'inclus le fichier ".js" dans le fichier XUL au début, juste après la balise <window> comme décrit dans le tuto... rien... pas de réaction à mes clics effrénés ! donc je fais des tests, et pour que le javascript tourne, je dois inclure le script à la fin de la balise <window>, ou tout du moins après avoir créé les objets concernés .

Tout début du fichier Xul concerné (le fichier est un peu lourd je ne vais pas tout recopier ici ^^):

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window id="fast_windows" title="Recherche rapide" orient="horizontal" xmlns:html="http://www.w3.org/1999/xhtml" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<!-- Normalement le tuto précise de déclarer le script ici, avec une commande du genre <script src:"projetheque.js"/> mais ça tournait pas alors je l'ai viré -_-' -->
<vbox flex="1" pack="center">
...

boutons concernés :

...
<button id="quit_button_rapid" label="Quitter"/>
...
<button id="quit_button_long" label="Quitter"/>
...

Fin du fichier :

	</vbox>
	<script src="chrome://projetheque/content/projetheque.js"/>
</window>

Code Javascript associé dans le fichier 'projetheque.js' :

function buttonPressed(event)
{
  alert('Le bouton '+ event.target.tagName +' a été pressé !');
}

var button_quit_rapid = document.getElementById("quit_button_rapid");
var button_quit_long = document.getElementById("quit_button_long");
button_quit_rapid.addEventListener('command', buttonPressed, true);
button_quit_long.addEventListener('command', buttonPressed, true);

Comme ça ça tourne, mais si je viens placer la ligne

<script src="chrome://projetheque/content/projetheque.js"/>

au début du code XUl, c'est à dire juste après la la balise <window...>, là le code javascript n'est plus exécuté...

Comprend pas ? les objets doivent être créés avant le script ? o_O merci par avance

# Re: Petit détail de débutant

Envoyé par : berserker

Date : 09/12/2005 13:13

il faut que tu mettes l'ajout des évènements dans une fonction appelée au chargement de la page.

function init() {
  var button_quit_rapid = document.getElementById("quit_button_rapid");
  var button_quit_long = document.getElementById("quit_button_long");
  button_quit_rapid.addEventListener('command', buttonPressed, true);
  button_quit_long.addEventListener('command', buttonPressed, true);
} 
<window onload="init()">

# Re: Petit détail de débutant

Envoyé par : laurentj

Date : 09/12/2005 16:52

tout à fait, il faut penser que lorsque le script est chargé, le reste du fichier xul/html n'est pas forcément encore chargé, donc que les element auxquel tu accèdes n'existe pas forcément encore.

Si tu met ton script à la fin, ça fonctionne puisqu'il a déjà parsé les balises précedentes..

C'est pour cela que si on veut faire quelque chose au démarrage, c'est sur le onload qu'il faut le faire.

# Re: Petit détail de débutant

Envoyé par : Christophe Charron

Date : 09/12/2005 21:22

Bonjour, la dernière remarque de Laurent

tout à fait, il faut penser que lorsque le script est chargé, le reste >du fichier xul/html n'est pas forcément encore chargé, donc que les >element auxquel tu accèdes n'existe pas forcément encore.

me fait rebondir sur une chtite question : existe-t'il un évènement indiquant que l'intégralité du fichier xul est chargé?

Cordialement Christophe

# Re: Petit détail de débutant

Envoyé par : laurentj

Date : 10/12/2005 14:46

existe-t'il un évènement indiquant que l'intégralité du fichier xul est chargé?

oui, l'evenment onload justement (valable aussi pour une page html)

# Re: Petit détail de débutant

Envoyé par : Kerrozen

Date : 11/12/2005 14:45

Merci pour ces confirmations, je me doutais un peu de la réponse car cela fonctionne de même façon que beaucoup de langages Web (à dire tous ceux que j'ai croisés jusque là ^^). Mais on sait jamais on en apprend tous les jours : j'ai du coup découvert l'éènement onload !

Merci à tous !

Kerrozen

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.