Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# Ecriture dans un fichier

Envoyé par : gregui

Date : 07/04/2009 15:07

Bonjour,

Je suis débutant en xul + js et j'essaie de créer un script qui permette d'écrire le texte data dans le fichier filepath au chargement de la page.

Voici le code source de ma page (code js inclus avec le code xul).

<?xml version="1.0" encoding="ISO-8859-1" ?>

<window title="Essai"
	onload="writeFile();"
        xmlns="http://www.mozilla.org/keymaster/gatekeeper /there.is.only.xul">
<script>
function writeFile()
{
  var data = "Coucou";
  var filePath = "C:\\test.txt";

  var file = Components.classes["@mozilla.org/file  /local;1"].createInstance(Components.interfaces.nsILocalFile);
  file.initWithPath(filePath);
  var foStream = Components.classes["@mozilla.org/network/file- output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
  foStream.init(file, 0×02 | 0×08 | 0x20, 0666, 0);
  foStream.write(data, data.length);
  foStream.close();
}
</script>
</window>

Mais au chargement de la page, rien ne se passe. (Le fichier est bien creer sur C:/)

Voyez - vous des erreurs dans mon script ?

# Re: Ecriture dans un fichier

Envoyé par : gregui

Date : 07/04/2009 15:35

En fait, je viens de m'apercevoir que j'avais une erreur dans la console d'erreur de firefox (3.0.8).

Permission refusée d'obtenir la propriété XPCComponents.classes

Comment obtenir cette permission ?

# Re: Ecriture dans un fichier

Envoyé par : gregui

Date : 07/04/2009 15:41

Bon en fait, j'ai résolu mon problème en ajoutant la ligne suivante au début de ma fonction :

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

Cela me donne les droits nécessaires pour écrire dans le fichier.

# Re: Ecriture dans un fichier

Envoyé par : gregui

Date : 08/04/2009 12:03

Bonjour,

En fait l'ajout de cette ligne n'a qu'en partie résolu mes problèmes, puisque je dois maintenant autoriser mon script à obtenir le privilège UniversalXPConnect en cliquant sur "accepter" dans la boite de dialogue qui s'ouvre, et ce à chaque fois que je veux exécuter mon script. (malgré le fait de cocher la case "se souvenir de cette décision").

Savez-vous comment outrepasser cette boite de dialogue ?

J'ai cherché du coté des certificats. J'ai suivi le tutoriel http://xulfr.org/wiki/ApplisWeb/SignerU(..) à la lettre et donc créé un certificat grâce à signtool (package nss), puis ajouté ce certificat dans firefox, et tenté de lancer mon application via un serveur web (apache), mais j'ai le message d'erreur "Type de fichier non sur".

Quelqu'un voit-il une solution ?

# Re: Ecriture dans un fichier

Envoyé par : laurentj

Date : 17/04/2009 13:03

La seule solution valable, c'est de faire une extension.

C'est de toute façon dangereux de vouloir controller la machine à l'insu de l'utilisateur.

# Re: Ecriture dans un fichier

Envoyé par : vivelapsp

Date : 23/04/2009 10:33

Bonjour, je me permet d'intervenir dans ce sujet cae je n'y comprends plus grand chose au niveau de la création de fichiers.

Je déveleloppe actuellement ma première extension pour FF et souhaiterait écrire et lire dans un fichier txt.

J'ai fait pas mal de recherche et beaucoup m'ont mené cette réponse : on ne peut pas écrire dans un fichier en javascript (sauf avec cas exceptionnel mais qui ne fonctionne que sous IE).

Ici je vois qu'apparamment c'est possible... Pourtant le code source ci dessus n'a aucune effet chez moi (aucun fichier créé).

De plus dans une extension que j'utilise, des fichiers sont bel et bien créés et édités. Cela doit donc être possible mais comment ? (j'ai tenté de regarder le code source de cette extension mais je ne trouve pas l'endroit ou il fait la manip'...)

EDIT : Désolé pour l'intervention, j'ai réussi a faire fonctionner l'écriture de fichier, et j'ai compris via cette phrase pourquoi tout le monde dit sur le net que ce n'est pas possible : "Le seul moyen pour le faire est d'écrire du code natif implémentant ces fonctionnalités avancées. Nous avons aussi besoin d'un moyen pour pouvoir appeler ce code natif aisément à partir de nos scripts. Mozilla fournit une telle possibilité en utilisant fr/XPCOM. " Du javascript sans mozilla et son fr/XPCOM impossible, avec mozilla : possible. Si j'ai bien compris...:)

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.