Comment appeler une fonction JavaScript déclarée dans mon extension, à l'aide d'un bouton HTML de ma page Web? p>
J'ai une page HTML, avec un bouton à l'intérieur. Lorsque l'utilisateur cliquez sur le bouton, il appellera une fonction que j'ai déjà déclarée à l'intérieur de ma propre extension Firefox. P>
3 Réponses :
Votre extension Firefox s'exécute dans un contexte JavaScript différent sur votre page HTML, l'extension ne peut donc pas être appelée directement à partir du JavaScript dans votre page HTML. P>
Cependant, vous pouvez concevoir l'extension pour permettre l'accès de HTML. HTML JavaScript n'est généralement pas autorisé à accéder à l'objet composant. Vous devez donc autoriser le code HTML un moyen d'obtenir à l'objet dans votre extension. Pour ce faire, créez un composant XPCOM dans votre poste et définissez l'objet dans la catégorie "Propriété globale JavaScript" via l'objet NsategoryManager. Le nom d'entrée est la chaîne utilisée à partir de JavaScript non privilégié, la valeur est l'ID de contrat de votre classe XPCom. P>
Toutefois, vous devez également permettre un accès JavaScript non privilégié à votre objet ou que le gestionnaire de Script Security bloquera l'accès. Pour permettre à cela, implémenter NSISECURYCHECKEDComponent - fournissant CANCREATWRAPPER (dans NSIIDPTR IID), CANCALLMETHOD (dans NSIIDPTR IID, dans MethodName WSTString), CANgetProperty (dans NSIIDPTR IID, dans WSTString PropertyName) et CanSetProperty (dans NSIIDPTR IID, dans Wstring PropertyName) pour revenir à AllAccess pour les propriétés autorisées et noaccess autrement. p>
Faites attention à ce que vous faites avec l'entrée de l'utilisateur et que vous autorisez l'accès à - il est très facile de créer accidentellement un trou de sécurité dans le navigateur qui le faisait. P>
TL; DR :) Ceci est une overcilleuse pour le problème d'origine qu'il semble, voir ma réponse.
Puisque vous contrôlez la page Web, la méthode la plus simple et la plus sûre pour faire ce que vous voulez consisterait à envoyer un événement DOM personnalisé sur la page Web et à l'écouter dans le code de poste: p>
https://developer.mozilla.org/fr/code_snippets/interAding_between_privileged_and_non-privileged_pages < / a> p>
Voici un exemple d'extension que j'ai écrit qui fait exactement ce http://mozilla.doslash.org/cw/ < / a> (non mis à jour dans la version de Firefox la plus récente, mais il est propre et doit être facile à mettre à jour). P>
Essayez de mettre ceci au début de votre fonction JavaScript qui tente d'accéder à un fichier local: Ceci donnera à l'utilisateur le choix de savoir s'ils veulent permettre à votre code de permettre à votre code de Accédez au système de fichiers local. p> p>
J'ai eu cette erreur lorsque j'essaie d'écrire dans un fichier XML à l'intérieur de l'extension: Erreur: autorisation refusée pour Pour obtenir la propriété XPCComponents.Classe toute idée de la manière de résoudre ce problème?
Référez-vous un élément ou un élément . Cela peut ne pas changer ma réponse mais voulant d'abord des éclaircissements.