Forums : XPCom

Aller à la discussion :  Plus récente Plus ancienne

# Demande d'aide pour le presse papier de Mozilla

Envoyé par : Utilisateur anonyme

Date : 07/04/2005 22:15

Bonjour, je découvre le xul et je le trouve assez performant et prometteur. Or, j'ai un projet à réaliser dans lequel je dois utiliser le presse papier de Mozilla. J'ai lu le tutoriel (trés bien fais), je m'en suis inspiré pour essayer de réaliser mon projet et je bloque sur le code du presse papier :

Code pour copier

var copytext=texte;

var str =  Components.classes["@mozilla.org/supports-string;1"]
.createInstance(Components.interfaces.nsISupportsString);
if (!str) return false;

str.data=copytext;
var trans =  Components.classes["@mozilla.org/widget/transferable;1"]
.createInstance(Components.interfaces.nsITransferable);
if (!trans) return false;

trans.addDataFlavor("text/unicode");
trans.setTransferData("text/unicode",str,copytext.length*2);

var clipid=Components.interfaces.nsIClipboard;
var clip = Components.classes["@mozilla.org/widget/clipboard;1"]
.getService(clipid);
if (!clip) return false;

clip.setData(trans,null,clipid.kGlobalClipboard);

Le problème, c'est que la console javascript de Mozilla me retourne l'erreur : Erreur : uncaught exception: Permission refusée d'obtenir la propriété UnnamedClass.classes

Si quelqu'un pouvais me filer un coup de mains, je lui en serais trés reconnaissant parceque là je galère. Merci bcp

# Re: Demande d'aide pour le presse papier de Mozilla

Envoyé par : laurentj

Date : 08/04/2005 13:47

Cette question revenant souvent, je l'ai mise dans la faq.

L'erreur dit bien ce qu'elle veut dire : permission refusée. Tu n'as pas le droit de faire appel aux objets xpcom. Ton fichier xul/js n'est pas enregistré dans le chrome (en clair, il n'est pas dans une extension). Tu ne peux donc pas faire appel à un objet XPCOM, quel qu'il soit pour des raisons évidentes de sécurité ;-)

Si tu veux utiliser les fonctions du presses papiers, tu dois faire une extension.

# Re: Demande d'aide pour le presse papier de Mozilla

Envoyé par : Utilisateur anonyme

Date : 12/04/2005 11:19

Merci pour ta réponse, elle m'a permis d'avancer un petit peu. En fait, je vais exposer mon problème afin déjà de savoir si c'est réalisable. Je travaille sur une application qui tourne sur Internet entièrement dévellopée en html/asp/javascript. Cette application doit tourner sous tous les systèmes d'exploitations et tous les navigateurs. Or, sur cette application, les utilisateurs utilisent souvent le copier-coller d'un formulaire vers l'autre. Pour cela, au dessu du formulaire, il y a un jolie petit bouton où quand l'utilisateur clique dessus, ça met dans le presse papier les données saisies dans le formulaire de façon à ce qu'il puisse les coller dans un autre formulaire. Question faisabilité? Est ce que le xul va me permettre de résoudre mon problème?

Donc suite à ta réponse, j'ai créé un paquetage dans lequel j'ai mis mes fonctions copier-coller afin qu'ils aient les privilèges avancés. J'ai vérifié qu'il se soit bien installé.

Maintenant, si je veux créer un autre fichier xul, en dehors du paquetage qui appelle ma fonction copier, comment dois je lui indiquer où elle est? J'ai essayé de créer un simple fichier xul avec juste un bouton où quand on clique dessus, ça appelle la fonction copier, pour cela, j'ai marqué

oncommand="copier('ce texte');" 

mais là; j'ai une erreur "copier denied" à laquelle je m'attendais.

J'ai donc voulut essayer d'une autre façon, en appelant directement la page qui se trouve dans mon paquetage.En fait, j'ai créer un bouton avec

oncommand="window.open'chrome://pressepapier/content/pressepapier/
etape1.xul','bmarks','chrome,whidth=600,height=300');

mais là; j'ai 3 erreurs :

Erreur de sécurité : le contenu situé à file:///C:/Program%20Files/Mozilla%20Firefox/chrome/test.xul ne peut pas charger de données ou établir un lien vers chrome://pressepapier/content/pressepapier/etape1.xul.

Erreur: Access to 'chrome://pressepapier/content/pressepapier/etape1.xul' from script denied.

Erreur: Uncaught exception:Exception..."Component returned failure code: 0x80004005' (NS_ERROR_FAILURE) nsIDOMJSWINDOW.open" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: <unknown filename> :: oncommand ::line 0" data: no

Si ça parle à quelqu'un, ça m'aiderais beaucoup. Merci

# Re: Demande d'aide pour le presse papier de Mozilla

Envoyé par : laurentj

Date : 15/04/2005 10:23

Question faisabilité?

non

Est ce que le xul va me permettre de résoudre mon problème?

non

Comme je le disais, tout ce qui est en dehors du chrome (donc en dehors d'une extension), a des limitations. Tu ne peux faire appel au presse papier en dehors d'une extension.

Pour que cela fonctionne, il faut que tu ais les privilèges chrome. Mais pas seulement la fonction qui fait le copier coller, mais TOUT le xul.

Donc dans le cadre d'une application web : impossible. Seul le ctrl+c, ctrl+v etc sont possibles, comme le propose déjà le navigateur.

# Re: Demande d'aide pour le presse papier de Mozilla

Envoyé par : Utilisateur anonyme

Date : 15/04/2005 14:53

Ok, merci bien pour ton aide et bonne continuation.

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.