2014-07-24 6 views
0

Je souhaite créer une nouvelle extension de chrome mais cela ne fonctionne pas. Je veux injecter un fichier js dans la page Web (toute page Web, pas seulement un. Si je pousse l'icône chrome sur google le script doit exécuter, si je pousse l'icône sur facebook, il doit exécuter ect.)Extension de chrome injecter js

c'est background.js

chrome.browserAction.onClicked.addListener(function(tab) { 

chrome.tabs.executeScript({ 

    null,{file: "backgrounds.js"} }); 
}); 

c'est backgrounds.js

document.body.innerHTML="display div elem with style and id"; 

c'est manifest.json

{ 
"name": "MyExt", 
"description": "an extension,what else?", 
"version": "1.0", 
"permissions": [ 
    "activeTab" 


], 
"content_scripts": [ 
    { 
     "matches": ["http://*/*"], 
     "js": ["background.js"] 
    } 
], 
"browser_action": { 
    "default_title": "myExt" 
}, 
"manifest_version": 2 
} 

Qu'est-ce que je me trompe? Je suis sur Windows 8.1 Update 1 avec du chrome dernière version

+0

Pro tip: ne nommez pas vos différents fichiers '' background.js' et backgrounds.js' – Xan

+0

merci pour la pointe: D –

Répondre

1

Votre manifeste est erroné: vous devez définir background.js comme votre script de fond:

"background" : { "scripts" : [ "background.js" ] }, 

et supprimer la section "content_scripts".


L'autorisation "activeTab" signifie que vous n'avez pas besoin de spécifier des autorisations d'hôte à injecter dans l'onglet en cours sur un clic d'action du navigateur, donc pas d'autres autorisations sont nécessaires.


L'argument tabId est facultatif, vous pouvez simplement laisser tomber au lieu de passer null. Et votre invocation est fausse (vous enveloppez deux arguments dans un seul objet). Voici la bonne façon:

chrome.browserAction.onClicked.addListener(function(tab) { 
    chrome.tabs.executeScript({file: "backgrounds.js"}); 
}); 
+0

Merci de tous les avez-vous encore une statue? :RÉ –