2011-08-06 2 views
1

Je développe un plugin personnalisé pour Firefox. Pour l'une des fonctions de ce plugin, j'ai un bouton qui, lorsqu'on clique dessus, doit basculer cacher/afficher pour un autre élément div. Ceci est réalisé au moyen d'une fonction Javascript. La fonction elle-même est dans un fichier qui est également inclus dans le plugin.Chargement d'un javascript dans HEAD par son URL chrome

Depuis que les éléments div sont sur la page du navigateur, j'essaie d'obtenir le Javascript pour cette fonction chargé dans le HEAD de la page en utilisant son URL chrome. Cependant, il ne donne pas le résultat souhaité.

Voici des extraits du code correspondant:

Le Javascript réel qui exécute l'action bascule. L'URL de chrome pour cela est: chrome://firefox_extension/content/togglerowz.js Si je mets cette URL dans le navigateur, il est capable d'afficher le code ci-dessous.

function toggle(doc) { 
    var resultBlock = doc.getElementById("RowzFFExtensionDynamicContainer"); 
    var toggleButton = doc.getElementById("RowzFFToggle"); 
    if (resultBlock.style.display == "block") { 
     resultBlock.style.display = "none"; 
     toggleButton.value = "Maximize"; 
    } else { 
     resultBlock.style.display = "block"; 
     toggleButton.value = "Minimize"; 
    } 
} 

Un autre javascript qui le charge dans le navigateur HEAD. Ceci est déclenché par un événement de chargement de fenêtre.

var doc = aEvent.originalTarget; 
var togglerowzscript = doc.createElement("script"); 
togglerowzscript.type = "application/javascript"; 
togglerowzscript.src = "chrome://firefox_extension/content/togglerowz.js"; 
var headvar = doc.getElementsByTagName("head")[0]; 
headvar.appendChild(togglerowzscript); 

Lorsque la page se charge, le contenu ci-dessous dans l'élément HEAD de la page (vu dans Firebug):

Lorsque je clique sur le bouton de la console d'erreur indique bascule n'est pas défini .

Répondre

2

Avez-vous mis en liste blanche le package chrome concerné en autorisant le chargement de certaines parties de contenu non approuvé? Le paramètre par défaut est de ne pas autoriser cela pour diverses raisons de sécurité et de confidentialité. Voir https://developer.mozilla.org/en/chrome_registration#contentaccessible

+0

Merci pour cette entrée! Donc, si mon dossier plugin est firefox_extension et que le script se trouve dans le dossier chrome, je devrai modifier le fichier chorme.manifest et ajouter une ligne comme "content firefox_extension chrome/contentaccessible = yes"? Ou est-il possible de l'appliquer à un fichier script individuel? –

+1

@Sagar V il devrait y avoir une ligne comme dans chrome.manifest déjà; vous avez juste besoin d'ajouter 'contentaccessible = yes'. Si vous voulez que cela s'applique uniquement à certains fichiers, vous devez placer ces fichiers dans un package chrome distinct. Une extension peut correspondre à plusieurs packages chrome via chrome.manifest. –

+0

Merci! Cela fonctionne pour moi maintenant. –

Questions connexes