J'écris une extension Chrome qui me redirigera vers une URL en cliquant sur l'icône d'action du navigateur.
J'essaie d'utiliser:
chrome.browserAction.onClicked.addListener
mais je reçois
Uncaught TypeError: Impossible de lire la propriété 'onClicked' of undefined
Ceci est mon fichier manifeste:
{
"name": "first extension",
"version": "2.2.12",
"description": "redirct to a link icon",
"browser_action": {
"default_icon": "icontest.png",
"default_title": "Do action"
},
"permissions": ["tabs", "http://*/*"],
"content_scripts": [{
"matches": ["http://*.Twitter.com/*", "https://*.Twitter.com/*"],
"js": ["twterland.js"]
}],
"icons": {
"16": "icontest.png",
"48": "icontest.png",
"128": "icontest.png"
}
}
Ceci est mon fichier js:
chrome.browserAction.onClicked.addListener(function(tab) { alert("hi"); });
Il semble que le code se trouve dans votre fichier twterland.js
, qui est votre script de contenu. browserAction
ne peut être utilisé que dans les pages d'extension, vous ne pouvez donc pas l'utiliser dans les scripts de contenu.
Document: https://developer.chrome.com/extensions/content_scripts
Cependant, les scripts de contenu ont certaines limites. Ils ne peuvent pas :
- Utilisez chrome. * APIs (sauf pour les parties de chrome.extension)
- Utilise des variables ou des fonctions définies par les pages de leur extension
- Utiliser des variables ou des fonctions définies par des pages Web ou par d'autres scripts de contenu
Mettez-le sur la page d’arrière-plan à la place.
Pour ceux qui ont déjà ajouté quelque chose comme
"background": {
"scripts": ["background.js"]
}
et obtient toujours Cannot read property 'onClicked' of undefined
- il suffit d'ajouter
"browser_action": {}
dans votre manifeste.json
edit: merci @Pacerier pour son commentaire, j'ai changé ma réponse
Si vous n'avez pas de propriété "browser_action"
définie dans votre manifest.json
, cette erreur peut se produire. La réponse de @ Kirill fonctionne, mais vous devez également ajouter un fichier icon.png
vierge, sinon chrome émettra une erreur indiquant qu'il ne peut pas trouver un tel fichier.
Ajouter ceci au fichier manifest.json
devrait supprime ceci est une erreur:
"browser_action": {}
Assurez-vous de lire la documentation pour une référence ultérieure sur l'utilisation du paramètre "browser_action"
.
Je recevais aussi cela, en ajoutant
"persistent": true
à ma déclaration d'arrière-plan dans manifest.json résolu.