Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# petites questions sur les objets javascript

Envoyé par : vic_le_faucheur

Date : 02/07/2011 22:22

bonjour, j'ai un peu de mal à comprendre certains aspect de la POO javascript ainsi que certaines fonctions XPCOM

je part du code suivant :

var httpRequestObserver =
{
	observe: function(subject, topic, data)
	{
		if (topic == "http-on-modify-request") 
		{
			alert('event detected !')
		}
	},

	get observerServices()
	{
		return Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
	},

	register: function()
	{
		this.observerService.addObserver(this, "http-on-modify-request", false);
	},

	unregister: function()
	{
		this.observerService.removeObserver(this, "http-on-modify-request");
	}
};

à la ligne "get observerServices()" je voudrais bien savoir comment fonctionne vraiment le "get" et de même s'il existe un "set". j'ai compris que "get" s'activait quand on demandais une méthode dont le nom est identique à celui de la fonction qui le succède, mais je n'ai aucune documentation à ce sujet.

je me demande aussi à quel moment la fonction "observe" se déclenche. j'ai trouver cette page : https://developer.mozilla.org/en/nsiobserverservice, mais ça ne m'aide pas vraiment car il n'y a aucun exemple et ce n'est pas très développé.
-> connaitriez vous des documentations sur les XPCOM plus complètes, plus faciles à comprendres (et si possible en français), car je pose beaucoup de questions faute de documentation (et je dois vous ennuyer ^^)

# Re: petites questions sur les objets javascript

Envoyé par : vic_le_faucheur

Date : 06/07/2011 20:41

up

# Re: petites questions sur les objets javascript

Envoyé par : Flodeb

Date : 07/07/2011 11:00

Le "get observerServices()" est en fait un accesseur caché à l'utilisateur. Il est utilisé pour éviter d’appeler explictitement une méthode pour accéder à une "pseudo-propriété" d'un objet. En clair, tu feras ça :

var tmp = httpRequestObserver.observerServices;

comme s'il s'agissait d'une variable membre (il peut donc y avoir des calculs derrière tout ça via la méthode, même si dans ton exemple, il retourne simplement une valeur).

La même chose existe pour le mutateur avec "set". Tu pourras directement faire ça (il faut donc toujours se rappeler qu'il n'y a pas forcément qu'une affectation lors d'un =, mais peut-être d'autres calculs plus longs).

httpRequestObserver.observerServices = tmp;

Bien sûr, il existe des règles à respecter pour utiliser ces opérateurs spéciaux (get & set), comme par exemple l'accesseur get observerServices ne doit posséder aucun paramètre, et le mutateur set observerServices un seul.

Pour la doc en XPCOM, je n'ai pas trop regardé (j'utilise celle de Mozilla perso), mais tu as regardé sur ce site ?

http://www.xulfr.org/wiki/XpCom

# Re: petites questions sur les objets javascript

Envoyé par : vic_le_faucheur

Date : 07/07/2011 12:14

exactement ce qu'il me fallait !

sinon pour le site, oui je l'ai vu (et j'en ai vu d'autre) mais en fait quand ils décrivent une interface par exemple pour contrôler le son ou le clavier; il n'y a pas d'exemple et du coup je ne sais pas bien comment les utiliser (surtout que c'est en anglais, ça facilite pas le travail ^^)

en tout cas MERCI !

# Re: petites questions sur les objets javascript

Envoyé par : jérôme

Date : 07/07/2011 14:05

Salut Vic, pour jouer un son, tu peux utiliser cette fonction :

musique = le nom du fichier, par exemple alert.wav

function jouerSon(musique)
{
var fichierMusique = 'chrome://monAppli/skin/sons/'+musique;
var son            = Components.classes["@mozilla.org/sound;1"].createInstance(Components.interfaces.nsISound);
var ioService      = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService);
var url            = ioService.newURI(fichierMusique, null, null);
son.play(url);
}

# Re: petites questions sur les objets javascript

Envoyé par : vic_le_faucheur

Date : 07/07/2011 18:14

merci jérôme ! j'avais déjà réussi à jouer un son mais je ne pouvais pas en jouer un local.

juste pour savoir tu apprend as t'en servir sur MDN ou xul.fr ? où tu as d'autres sources ? (moi j'utilise que les deux première)

# Re: petites questions sur les objets javascript

Envoyé par : jérôme

Date : 08/07/2011 11:31

Salut Vic (j'adore ton pseudo:),

pour apprendre tout ce bazar, c'est la merde. Des mois à fouiner le web, sur xulfr.org, sur mdn, mais aussi de multiples recherches sur google. On trouve des bouts de code, on essaie, ça marche pas, c'est obsolète... Un vrai parcours du combattant. Et puis, au bout de 2 ans, on se rend compte qu'on a capitalisé du savoir... Enfin, des centaines d'heures à se prendre la tronche pour comprendre le fonctionnement.

Navré, je n'ai pas de source précise à te donner. C'est de l'huile de coude qu'il faut...

# Re: petites questions sur les objets javascript

Envoyé par : Flodeb

Date : 08/07/2011 12:17

Je confirme. C'est exactement ça. Je suis sur une extension Thunderbird depuis 1 mois (donc Xpcom et tout le bazar), et c'est assez périlleux. Faut fouiner de partout. Tester. Retester. Télécharger le code source de Firefox pour comprendre un truc (véridique) !

# Re: petites questions sur les objets javascript

Envoyé par : vic_le_faucheur

Date : 08/07/2011 18:11

ok ^^

mais ici c'est un forum où vous expliquez super bien et où vous êtes sympa : du coup on est plusieurs à se prendre la tronche et on avance tous ensemble en ce faisant partager ce que l'on connais déjà !

du coup ça va avancer super vite ^^ (je reposerais des questions après mes vacances ^^, reposez vous bien ...)

# Re: petites questions sur les objets javascript

Envoyé par : Flodeb

Date : 11/07/2011 15:52

Tout à fait :)

Bonne vacs.

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.