Расширение Chrome Содержимое Script не загружено до обновления страницы
У меня есть контент расширения Chrome script, который я хочу запустить на платах Trello. Пока что он содержит только:
console.log("Hello, world!");
Когда вы открываете страницу платы Trello по внутренней ссылке, например на странице "Мои доски", содержимое script не запускается. Он запускается после обновления страницы.
Мой файл манифеста содержит:
{
"manifest_version": 2,
"name": "Temp Ext",
"version": "1.0",
"content_scripts": [
{
"matches": ["*://trello.com/b/*"],
"js":["contentscript.js"]
}
]
}
Может ли кто-нибудь помочь мне понять, почему script не запускается во время загрузки страницы?
EDIT: Исправлен вопрос. Проблема возникла только после внутренних ссылок, а не ссылок.
Ответы
Ответ 1
Проблема заключалась в том, что Trello использует HTML5 pushState для переходов страницы, поэтому контент script не всегда запускался после открытия платы.
Решение
Изменения в манифесте:
{
"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"
]
}
Добавить фон script:
chrome.webNavigation.onHistoryStateUpdated.addListener(function(details) {
chrome.tabs.executeScript(null,{file:"contentscript.js"});
});
Ответ 2
Он отлично работает для меня. Я создал расширение с двумя файлами, которые вы показали:
manifest.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!");
Затем я открою третью ссылку в этой строке поиска: https://www.google.ca/search?q=trello+board+game&oq=trello+board+game&aqs=chrome..69i57.5037j0j1&sourceid=chrome&ie=UTF-8 ( "Игра престолов: Настольная игра - Трело" ) и Chrome DevTools Console пишет "Привет, мир!"