Содержимое расширения Chrome Script на странице https://chrome.google.com/webstore/

Предотвращает ли Chrome доступ к URL-адресу веб-магазина?

Я хотел бы сделать расширение, которое отображает подобную кнопку рядом с кнопкой +1, но похоже, что скрипты содержимого не работают на https://chrome.google.com/webstore/ *

Это правда?

Ответ 1

TL; DR Веб-магазин не может быть написан по сценариям с помощью расширений, и флаг, который ранее позволял вам это делать (--allow-scripting-gallery) был удален в Chrome 35.

Расширения Chrome не могут выполнять скрипты содержимого/вставлять CSS в Интернет-магазин Chrome. Это явно указано в исходный код, в функции IsScriptableURL (щелкните по предыдущей ссылке, чтобы увидеть полную логику).

  // The gallery is special-cased as a restricted URL for scripting to prevent
  // access to special JS bindings we expose to the gallery (and avoid things
  // like extensions removing the "report abuse" link).
  // TODO(erikkay): This seems like the wrong test.  Shouldn't we we testing
  // against the store app extent?
  GURL store_url(extension_urls::GetWebstoreLaunchURL());
  if (url.host() == store_url.host()) {
    if (error)
      *error = manifest_errors::kCannotScriptGallery;
    return false;
  }

manifest_errors::kCannotScriptGallery определяется здесь:

const char kCannotScriptGallery[] =
    "The extensions gallery cannot be scripted.";

Ошибка можно просмотреть на панели справочной страницы, когда вы используете chrome.tabs.executeScript для ввода script на вкладке Web Store. Например, откройте https://chrome.google.com/webstore/, затем выполните следующую script на базовой странице расширения (через консоль, для живой отладки)

chrome.tabs.query({url:'https://chrome.google.com/webstore/*'}, function(result) {
    if (result.length) chrome.tabs.executeScript(result[0].id, {code:'alert(0)'});
});