Внедрение CSS не удается с помощью объявления в content_scripts, но работает при загрузке с помощью встроенного JavaScript

Мы отметили, что ожидаемый способ внедрения CSS на стороннюю страницу, похоже, не работает должным образом.

Соответствующие порции manifest.json:

  "content_scripts": [
    {
      "matches": ["*://*.youtube.com/watch?v*"],
      "css": ["css/youTubeInject.css"],       
      "all_frames": true,
      "js": ["js/thirdParty/underscore.js", "js/thirdParty/jquery.js", "js/youTubeInject.js"]
    }   
  ]

Здесь я заявляю, что хотел бы добавить немного CSS и немного JavaScript на страницы, которые соответствуют регулярному выражению YouTube.

Мой JavaScript все впрыскивает нормально. Мой CSS не вводится вообще. Я трижды проверил местоположение файла и имена.

Верхняя часть youTubeInject.js содержит:

$(function () {

    var style = document.createElement('link');
    style.rel = 'stylesheet';
    style.type = 'text/css';
    style.href = chrome.extension.getURL('css/youTubeInject.css');
    document.head.appendChild(style);

Это приводит к тому, что мой CSS загружается должным образом и является допустимым решением проблемы.

У кого-нибудь есть предложения или ошибка, которую я могу отследить, по этой проблеме? Это'буду признателен!

 Sean Anderson04 июл. 2013 г., 00:43
Я просто должен не согласиться с тем, что это закрытое дело. Я не смог решить проблему. Простой тест выполнения body {background-color: red! Важный} показывает изменение цвета фона, когда я вставляю файл CSS через javascript. Изменение загрузки через css в manifest.json приводит к потере CSS. Заметим:screencast.com/t/acp44sdtl Этот скринкаст воспроизводит мою проблему и показывает, где CSS теряется после удаления вызова JavaScript.

Ответы на вопрос(1)

Решение Вопроса

что Chrome игнорирует строку запроса и фрагмент местоположения при проверке необходимости применения файла CSS, объявленного в файле манифеста.

http://www.youtube.com/watch?v=VIDEOID рассматривается как.

http://www.youtube.com/watch

Ваш шаблон соответствия включает в себя часть строки запроса, что приводит к тому, что шаблон не совпадает вообще.

В настоящее время поведение "Матчи" противоречиво:

Documentation
    Pattern     : https://*.google.com/foo*bar
    What it does: Matches (...) path starts with /foo and ends with bar
"js" in manifest file
    Checks if pattern matches scheme://host/path?querystring
    Example     : https://google.com/foo?bar
    Non-example : https://google.com/foobar?
"css" in manifest file
    Checks if pattern matches scheme://host/path
    Example     : https://google.com/foobar?thisisignored
    Non-example : https://google.com/foo?bar
In all cases, the location fragment (aka location hash) is ignored.

Об этой ошибке сообщалось более 2 лет назад, но это нет догнать:

Проблема 68561: манифест content_scripts 'Матчи' неправильно применяется

Там's другая ошибка, возможно связанная, которая имеет больше последователей:

Проблема 100106: исключение доменов из сценариев содержимогоработать с файлами CSS

Ваш ответ на вопрос