L'extension de Chrome Content Script n'est pas chargée jusqu'à ce que la page soit actualisée

J'ai un script de contenu d'extension Chrome que je souhaite exécuter sur les cartes Trello. Pour l'instant, il ne contient que:

console.log("Hello, world!"); 

Lorsque vous ouvrez la page du tableau Trello via un lien interne, comme dans la page My Boards, le script de contenu ne s'exécute pas. Il fonctionne après avoir rafraîchi la page.

Mon fichier manifeste contient:

 { "manifest_version": 2, "name": "Temp Ext", "version": "1.0", "content_scripts": [ { "matches": ["*://trello.com/b/*"], "js":["contentscript.js"] } ] } 

Quelqu'un peut-il m'aider à comprendre pourquoi le script ne fonctionne pas au moment où la page est initialement chargée?

EDIT: question corrigée. Le problème ne s'est produit qu'après avoir suivi les liens internes, pas de liens.

Le problème était que Trello utilise le pushState de HTML5 pour les transitions de page, de sorte que le script de contenu n'était pas toujours exécuté après l'ouverture d'une carte.

Solution

Changements à manifester:

 { "manifest_version": 2, "name": "Temp Ext", "version": "1.1", "content_scripts": [{ "matches": ["*://trello.com/*"], "js":["contentscript.js"] }], "background": { "scripts": ["background.js"] }, "permissions": [ "*://trello.com/*", "tabs", "webNavigation" ] } 

Ajouter un script en arrière plan:

 chrome.webNavigation.onHistoryStateUpdated.addListener(function(details) { chrome.tabs.executeScript(null,{file:"contentscript.js"}); }); 

Cela fonctionne parfaitement pour moi. J'ai créé une extension avec deux fichiers que vous avez montrés:

Manif.json:

 { "manifest_version": 2, "name": "Temp Ext", "version": "1.0", "content_scripts": [ { "matches": ["*://trello.com/b/*"], "js":["contentscript.js"] } ] } 

Contentscript.js:

 console.log("Hello, world!"); 

Ensuite, j'ouvre un troisième lien dans ce thread de recherche: https://www.google.ca/search?q=trello+board+game&oq=trello+board+game&aqs=chrome..69i57.5037j0j1&sourceid=chrome&ie=UTF-8 (" Game of Thrones: le jeu de société – Trello ") et la console Chrome DevTools écrit" Bonjour, monde! "