Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# xpcom / picker

Envoyé par : Utilisateur anonyme

Date : 21/09/2005 14:49

bonjour, je suis en train de faire une application en xul et je voudrais introduire un file picker ... je lis le xul tutorial ...je mets une fonction :

function something () {

var nsIFilePicker = Components.interfaces.nsIFilePicker;
var fp = Components.classes["@mozilla.org/filepicker;1"]
       .createInstance(nsIFilePicker);
fp.init(window, "Sélectionner un fichier", nsIFilePicker.modeOpen);

}

et je vois rien apparaître ! il faut initialiser quelque chose pour que ça marche ?

merci

stephane

# Re: xpcom / picker

Envoyé par : laurentj

Date : 21/09/2005 15:25

tu as en effet oublier la suite...

 var reponse = fp.show();
 if (reponse == nsIFilePicker.returnOK){
    alert('on peut maintenant ouvrir le fichier  '+ fp.file.path);
 }

# Re: xpcom / picker

Envoyé par : Utilisateur anonyme

Date : 21/09/2005 15:29

ben en fait j'ai mis le code que tu proposes aussi mais rien de rien ... j'execute le fichier xul depuis firefox : je sais pas ce qu'il se passe ?

# Re: xpcom / picker

Envoyé par : Utilisateur anonyme

Date : 21/09/2005 15:37

ma page est la suivante :

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window id="example-window" title="Example 8.2.1"
       xmlns:html="http://www.w3.org/1999/xhtml"
    xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script>
function selectFile(){
alert ( 'pour voir si le code ...');
var nsIFilePicker = Components.interfaces.nsIFilePicker;
var fp = Components.classes["@mozilla.org/filepicker;1"]
      .createInstance(nsIFilePicker);
fp.init(window, "Sélectionner un fichier", nsIFilePicker.modeOpen);
var reponse = fp.show();
if (reponse == nsIFilePicker.returnOK){
   alert('on peut maintenant ouvrir le fichier  '+ fp.file.path);
}
}
</script>
<button label="essai" oncommand="selectFile()" /> 
</window>

# Re: xpcom / picker

Envoyé par : Julien Appert

Date : 22/09/2005 02:28

C'est un pb de sécurité. Au début de ta fonction, ajoute cette ligne :

netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");

ça devrait beaucoup mieux fonctionner.

NB : tu dois avoir un message d'erreur dans la console javascript.

# Re: xpcom / picker

Envoyé par : laurentj

Date : 22/09/2005 11:00

ah oui, j'ai pas pensé, si effectivement tu execute ce script depuis une page XUL distante (qui n'est donc pas déclarée dans le chrome) ça ne fonctionnera pas comme ça.

# Re: xpcom / picker

Envoyé par : MiKe

Date : 22/09/2005 16:55

laurentj a écrit:

ah oui, j'ai pas pensé, si effectivement tu execute ce script depuis une page XUL distante (qui n'est donc pas déclarée dans le chrome) ça ne fonctionnera pas comme ça.

D'ailleurs j'ai une question Laurent à ce propos et je pense que beaucoup de monde se demande cela:

Comment peut-on savoir les Interfaces qui sont accessibles via un script distant et celles qui le sont pas??

Par exemple Components.interfaces.nsILocalFile est disponible alors que comme tu viens de le souligner Components.interfaces.nsIFilePicker ne l'est pas.

Je me pose la question pour l'interface nsIWebBrowserPrint alors utilisable ou non à distance? Y-a t'il une règle générale?

Merci d'avance

# Re: xpcom / picker

Envoyé par : laurentj

Date : 26/09/2005 16:02

Components.interfaces est un objet comme un autre. Donc si tu veux savoir si tel interface existe, tu regardes si Components.interfaces possède une propriété du même nom...

# Re: xpcom / picker

Envoyé par : laurentj

Date : 26/09/2005 16:57

if(undefined == Components.interfaces["moninterface"]){
ou 
if(undefined == Components.interfaces.moninterface){
   // l'interface n'existe pas
 }else{
 // l'interface existe
}

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.