2012-03-15 6 views
14

Может ли кто-нибудь объяснить это мне. Я пытаюсь ввести CSS-файл на веб-страницу, используя content_script с расширениями Google, но мой файл css никогда не добавляется на веб-страницу. Может ли кто-нибудь сказать мне, что я делаю неправильно, и помочь мне исправить это? благодаряМой CSS не вводится через мой скрипт контента

Manifest:

{ 
    "name": "Extension", 
    "version": "0", 
    "description": "", 


    "permissions": ["tabs", "http://*/*", "https://*/*", "file:///*/*"], 
    "content_scripts": [ 
    { 
     "matches": [ "http://*/*", "https://*/*", "file:///*/*"], 
     "css": ["myStyles.css"], 
     "js": ["myScript.js"], 
     "all_frames": true 
    } 
    ] 
} 

myStyles.css

#test { 
    margin: 0 10px; 
    background: #fff; 
    padding: 3px; 
    color: #000; 
} 

ответ

31

Стиль лист фактически вводят, но не применяется, потому что другие стили отменяют правила. Чтобы правила работали, у вас есть несколько вариантов:

  1. Увеличьте specificity ваших правил CSS.
  2. Суффикс каждое правило с !important:

    #test { 
        margin: 0 10px !important; 
        background: #fff !important; 
        padding: 3px !important; 
        color: #000 !important; 
    } 
    
  3. Инжектируйте CSS с помощью скрипта содержания:

    myScript.js:

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

    manifest.json

    { 
        "name": "Extension", 
        "version": "0", 
        "description": "", 
        "manifest_version": 2, 
        "permissions": ["tabs", "http://*/*", "https://*/*", "file:///*/*"], 
        "content_scripts": [ 
        { 
         "matches": [ "http://*/*", "https://*/*", "file:///*/*"], 
         "js": ["myScript.js"], 
         "all_frames": true 
        } 
        ], 
        "web_accessible_resources": ["myStyles.css"] 
    } 
    

    Последний ключ, web_accessible_resources необходим, если manifest version 2 активен, так что файл CSS можно прочитать с нерасширительной страницы.

+3

Для пояснения: Вы делаете ** не ** должны использовать оба метода. Использование одного из них будет в порядке. Первый из них более надежный, второй может * вызвать мерцание. –

+0

Спасибо, что добавил его в :) – user1255276

+0

# 1 работает для меня, но # 2 не работает. Это действительно странно. Возможно ли, что исходная страница пытается заблокировать расширение, чтобы изменить его стиль? На некоторых сайтах (например, appannie.com) это нормально, но некоторые из них не являются (например, facebook.com). Во всяком случае, # 1 отлично. Благодаря! –