9
votes

Comment appeler une fonction dans Firefox Extension à partir d'un bouton HTML

Comment appeler une fonction JavaScript déclarée dans mon extension, à l'aide d'un bouton HTML de ma page Web?

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.


2 commentaires

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.


3 Réponses :


5
votes

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.

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.

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.

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.


1 commentaires

TL; DR :) Ceci est une overcilleuse pour le problème d'origine qu'il semble, voir ma réponse.




1
votes

Essayez de mettre ceci au début de votre fonction JavaScript qui tente d'accéder à un fichier local: xxx

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.


0 commentaires