Подтвердить что ты не робот

Как вводить CSS в веб-страницу через расширение Chrome?

Я не знаю, как вводить CSS в веб-страницу через расширение Chrome. Я пытаюсь ввести это на веб-страницу:

body {
   background: #000 !important;
}

a {
   color: #777 !important;
}

Вот мой manifest.json:

{
"update_url":"http://clients2.google.com/service/update2/crx",
  "name": "Test Extension",
  "version": "1.0",
  "description": "This is a test extension for Google Chrome.",
  "icons": { "16": "icon16.png",
           "48": "icon48.png",
          "128": "icon128.png" },
  "background_page": "background.html",
  "browser_action": {
    "default_icon": "icon19.png"
  },
  "content_scripts": [
    {
      "matches": ["http://test-website.com/*"], 
      "js": ["js/content-script.js"]
    }
  ],

    "permissions": [ "tabs", "http://test-website.com/*" ]

}
4b9b3361

Ответ 1

Вам может потребоваться добавить дополнительную строку в файл манифеста:

"content_scripts": [
    {
      "matches": ["http://test-website.com/*"], 
      "js": ["js/content-script.js"],
      "css" : ["yourcss.css"]
    }
],

Файл CSS, определенный в "css": ["..."], будет добавлен на каждую страницу, которая соответствует местоположению, указанному в matches.

Если вы разрабатываете расширение Chrome, убедитесь, что вы смотрите на эти страницы:

Ответ 2

Вы также можете вставить файл css в один или несколько содержимого табуляции, используя следующий синтаксис, подробно описанный на веб-странице Chrome Tabs:

chrome.tabs.insertCSS(integer tabId, object details, function callback);

Вам, разумеется, потребуется идентификатор вашей целевой вкладки.

В документации Chrome Extension не обсуждается, как интерпретируется введенный CSS, но факт заключается в том, что файлы CSS, которые вводятся на веб-страницу, посредством этого метода или путем включения их в манифест, интерпретируются как таблицы стилей пользователя.

В этом отношении важно отметить, что если вы будете вводить таблицы стилей с помощью этих методов, они будут ограничены одним критическим способом (по крайней мере, с Chrome v.19): Chrome игнорирует "важные" директивы в пользовательских таблицах стилей. Ваши введенные правила стиля будут превзойдены чем-либо, включенным в страницу, как это было написано.

Один рабочий процесс, если вы хотите не вводить правила встроенного стиля, следующий (я использую jQuery для фактической вставки, но это можно сделать с помощью прямого Javascript):

$(document).ready(function() {
var path = chrome.extension.getURL('styles/myExtensionRulz.css');
$('head').append($('<link>')
    .attr("rel","stylesheet")
    .attr("type","text/css")
    .attr("href", path));
});

Затем вы можете поместить таблицу стилей в папку стилей расширения, но вам не нужно будет перечислять ее в любом месте манифеста. Соответствующая часть, приведенная выше, заключается в том, что вы будете использовать API-интерфейс chrome для получения URL-адреса вашей таблицы стилей, а затем подключите его как значение ссылки href. Теперь вашей таблице стилей будет присвоен более высокий приоритет, и вы можете использовать директиву "! Important" там, где это необходимо.

Это единственное решение, которое работает для меня в последней версии Chrome.