2012-03-15 16 views
14

¿Alguien me puede explicar esto? Intento insertar un archivo CSS en una página web usando el content_script con las extensiones de Google, pero mi archivo css nunca se agrega a la página web. ¿Puede alguien decirme lo que estoy haciendo mal y ayudarme a solucionarlo? graciasMi CSS no se está inyectando a través de mi script de contenido

Manifiesto:

{ 
    "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; 
} 

Respuesta

31

La hoja de estilo se inyecta en realidad, pero no aplica, ya que otros estilos tienen prioridad sobre las reglas. Para que las reglas funcionen, tiene algunas opciones:

  1. Aumente el specificity de sus reglas de CSS.
  2. sufijo de cada regla con !important:

    #test { 
        margin: 0 10px !important; 
        background: #fff !important; 
        padding: 3px !important; 
        color: #000 !important; 
    } 
    
  3. inyectar el CSS a través de un script contenido:

    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"] 
    } 
    

    La última clave, web_accessible_resources es necesaria cuando manifest version 2 está activo, de modo que el archivo CSS se puede leer desde una página que no sea de extensión.

+3

Para aclarar: Usted ** no ** tiene que usar ambos métodos. Usar uno de ellos estará bien. El primero es más confiable, el segundo * puede * causar un parpadeo. –

+0

Gracias que lo agregué :) – user1255276

+0

# 1 funciona para mí, pero el # 2 no funciona. Es realmente extraño. ¿Es posible que la página original intente bloquear la extensión para cambiar su estilo? En algunos sitios web (por ejemplo, appannie.com) está bien, pero algunos no (p. Ej., Facebook.com). De todos modos, el # 1 es genial. ¡Gracias! –

Cuestiones relacionadas