Расширение Chrome работает только на сайте developer.chrome.com

Это мое первое расширение для 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 или любые другие варианты. Я все еще не могу добавить несколько веб-сайтов, добавив запятые между ними, есть какие-то идеи?

Попробуйте добавить несколько условий в массив conditions и использовать urlContains вместо hostEquals в PageStateMatcher.

Iván Nokonoko 14.06.2018 23:18

Кроме того, hostEquals означает точное совпадение имени хоста, конечно, без протокола: //.

wOxxOm 15.06.2018 08:14
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
7
2
2 441
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Попробуйте добавить '*', чтобы указать, на каких страницах Amazon будет работать ваше расширение.

Например:

"https://*.amazon.com/*"

https://developer.chrome.com/apps/match_patterns

Спасибо за ввод, я пробовал это раньше, и я просто попробовал еще раз, но безуспешно. Я оставлю это в manifest.json, спасибо!

Simon Wong 14.06.2018 22:58
Ответ принят как подходящий

Попробуйте добавить больше условий и использовать 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()]
    }]);
});

Другие вопросы по теме