Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# Ouvrir un fichier de manière asynchrone FF3

Envoyé par : mymyoux

Date : 21/02/2008 11:53

Bonjour,

voilà j'ai fait un extension pour firefox 2 et je suis entrain de l'adapter pour le 3 (tout en restant compatible pour le 2) et je rencontre un problème :

je dois ouvrir un fichier texte de manière asynchrone (pour le lire) et avant j'utilisais ce petit bout de code :

var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath("addressedufichierlocal");
file.QueryInterface(Components.interfaces.nsIFile);
var ios = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService);
var fileURI = ios.newFileURI(file);
var channel = ios.newChannelFromURI(fileURI);
var sl =  Components.classes["@mozilla.org/network/stream-loader;1"].createInstance(Components.interfaces.nsIStreamLoader);

jusque là tout va bien et ensuite :

sl.init(channel,monobserver,null);

et là firefox 3 semble n'accepter qu'un seul paramètre (observer)

sl.init(monobserver);

seulement.. ça ne charge rien (ce qui me semble évident puisque sl est indépendant de tout le reste du coup...) bref comment faire maintenant ?

mon observateur ressemble à ça :

monobserver.onStreamComplete=function(aLoader, aContext, aStatus, aLength, aResult)
{
   ...
}

C'est la dernière petite chose qui me reste et j'aurais fini ma transition... Merci d'avance.

Question subsidiaire : jusqu'à présent j'utilise try..catch pour différencier FF2 de FF3, n'y'a t'il pas une manière plus élégante?

# Re: Ouvrir un fichier de manière asynchrone FF3

Envoyé par : laurentj

Date : 29/02/2008 14:43

Salut,

bon déjà, faut savoir que xulplanet.com a été mis à jour en ce qui concerne la référence sur les interfaces et composants xpcom. Donc c'est par là qu'il faut chercher ;-)

Bref, qu'est ce qu'on trouve :

Donc

 channel.asyncOpen(sl, null);

jusqu'à présent j'utilise try..catch pour différencier FF2 de FF3, n'y'a t'il pas une manière plus élégante?

try catch sur quoi ? parce que je doute que ce soit vraiment élégant :-p À ta place, je récupérerai le numero de version de firefox (pref app.version je crois, à vérifier), et j'utiliserai le comparateur

# Re: Ouvrir un fichier de manière asynchrone FF3

Envoyé par : laurentj

Date : 29/02/2008 14:46

Pour le numéro de version, on l'a avec @mozilla.org/xre/app-info;1

# Re: Ouvrir un fichier de manière asynchrone FF3

Envoyé par : Yep

Date : 23/06/2008 18:38

En s'inspirant de ce qu'à fait le projet calendar, tu peux de vérifier la version du moteur gecko (1.8 = Firefox 2 et 1.9 = Firefox 3) :

var appInfo = Components.classes["@mozilla.org/xre/app-info;1"].getService(Components.interfaces.nsIXULAppInfo);
var isOnBranch = appInfo.platformVersion.indexOf("1.8") == 0;

if (isOnBranch) {
   sl.init(channel,monobserver,null);
} else {
   sl.init(monobserver);
}

source : calDavCalendar.js

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.