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?
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
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
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.