Это мое первое расширение для Chrome, поэтому, пожалуйста, простите меня за то, что я задаю такой вопрос новичку. В настоящее время мое расширение работает только на developer.chrome.com (значок имеет цвет), но я бы хотел, чтобы оно работало на amazon.com (значок серый). Из-за поиска в Google я не видел, чтобы кто-то другой сталкивался с такой же проблемой, поэтому я предполагаю, что это ошибка с моей стороны. Вот мой manifest.json:
{
"name": "Reviews Extension",
"version": "1.0",
"description": "Get additional reviews from third party retailers",
"permissions": [
"https://api.walmartlabs.com/",
"https://www.amazon.com/",
"activeTab",
"declarativeContent",
"storage"
],
"content_scripts": [
{
"matches": [
"<all_urls>"
],
"js": ["content.js"]
}
],
"options_page": "options.html",
"background": {
"scripts": [
"background.js"
],
"persistent": false
},
"page_action": {
"default_popup": "popup.html",
"default_icon": {
"16": "images/get_started16.png",
"32": "images/get_started32.png",
"48": "images/get_started48.png",
"128": "images/get_started128.png"
}
},
"icons": {
"16": "images/get_started16.png",
"32": "images/get_started32.png",
"48": "images/get_started48.png",
"128": "images/get_started128.png"
},
"manifest_version": 2
}
ОБНОВИТЬ:
Когда я возился с background.js на pageUrl: {hostEquals: 'developer.chrome.com'}, я обнаружил, что когда я удаляю URL-адрес, он больше не работает на developer.chrome.com. Но когда я изменил его на https://www.amazon.com/ вместо developer.chrome.com, он не работал и на главной странице Amazon.
'use strict';
chrome.runtime.onInstalled.addListener(function () {
chrome.storage.sync.set({ color: '#3aa757' }, function () {
console.info('The color is green.');
});
chrome.declarativeContent.onPageChanged.removeRules(undefined, function () {
chrome.declarativeContent.onPageChanged.addRules([{
conditions: [new chrome.declarativeContent.PageStateMatcher({
pageUrl: { hostEquals: 'developer.chrome.com' },
})],
actions: [new chrome.declarativeContent.ShowPageAction()]
}]);
});
});
ОБНОВЛЕНИЕ 2:
Получил работу, изменив pageURL в background.js. Его нужно было отформатировать особым образом: www.amazon.com, НЕ https://www.amazon.com, amazon.com или любые другие варианты. Я все еще не могу добавить несколько веб-сайтов, добавив запятые между ними, есть какие-то идеи?
Кроме того, hostEquals означает точное совпадение имени хоста, конечно, без протокола: //.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Попробуйте добавить '*', чтобы указать, на каких страницах Amazon будет работать ваше расширение.
Например:
"https://*.amazon.com/*"
https://developer.chrome.com/apps/match_patterns
Спасибо за ввод, я пробовал это раньше, и я просто попробовал еще раз, но безуспешно. Я оставлю это в manifest.json, спасибо!
Попробуйте добавить больше условий и использовать hostContains или urlContains вместо hostEquals.
Например:
chrome.declarativeContent.onPageChanged.removeRules(undefined, function () {
chrome.declarativeContent.onPageChanged.addRules([{
conditions: [
new chrome.declarativeContent.PageStateMatcher({
pageUrl: { hostContains: '.developer.chrome.com' },
}),
new chrome.declarativeContent.PageStateMatcher({
pageUrl: { hostContains: '.amazon.com' },
})
],
actions: [new chrome.declarativeContent.ShowPageAction()]
}]);
});
Попробуйте добавить несколько условий в массив
conditionsи использоватьurlContainsвместоhostEqualsв PageStateMatcher.