2011-12-04 31 views

Respuesta

6

A partir del Add-on SDK 1.14 no experimental (API puede cambiar) el apoyo para esto en el módulo page-mod:

var pageMod = require("sdk/page-mod").PageMod({ 
    include: "*", 
    contentStyleFile: require("sdk/self").data.url("my-style.css") 
}); 

Ver Modifying Web Pages Based on URL para una guía elaborada para el uso de la página-mod.

Hay a page on the Addon SDK's wiki discutiendo problemas con la implementación actual, aunque parece un poco desactualizado.

Debajo del capó se usa nsIDOMWindowUtils .loadSheet() para agregar la hoja de estilo sin tocar el DOM de la página. (Esta API se añadió en Firefox 18, ver bug 737003. Antes de que se tenía que utilizar nsIStyleSheetService que era similar, pero no-ficha específica.)


Antes de que se puede utilizar el script de contenido la de la página-mod para insertar el elemento de enlace o estilo (example). [edit] gracias al comentario de lwburk, aquí hay una descripción elaborada más elaborada en Greasemonkey Hacks: Tips & Tools for Remixing the Web with Firefox By Mark Pilgrim: "Alter a Page's Style" section.

+0

Es imposible para mí utilizar XPCOM Desde que estoy usando el SDK AppBuilder – italiano40

+1

@ italiano40: mantener referencia " SDK de desarrollador ". Si se refiere al SDK complementario, utilice el término correcto. Es posible utilizar los componentes de XPCOM en el SDK adicional ('require ('chrome')'), aunque es un tema avanzado e invalidará las garantías de compatibilidad de versiones anteriores que normalmente proporciona el complemento SDK. – Nickolay

+1

Ver también: http://books.google.com/books?id=KWRE2C_S4YsC&pg=PA19&lpg=PA19&dq=mark+pilgrim+add+Global+Style&source=bl&ots=SnfX5Ad2WO&sig=CKoF9A0Ala96vphTeU4mK2dbMe4&hl=en&ei=GJ3iTpeJKKK2sQLBkMDvBQ&sa=X&oi=book_result&ct=result&resnum= 1 & ved = 0CCQQ6AEwAA # v = onepage & q & f = false –

1

Para insertar CSS de main.js ahora se puede utilizar "página-mod":

var data = require("sdk/self").data; 
var pageMod = require("sdk/page-mod"); 

pageMod.PageMod({ 
    include: "*.org", 
    contentStyleFile: data.url("my-page-mod.css") 
}); 
+0

¡Gracias por mencionar esto! Actualicé mi respuesta para la versión más reciente del Addon SDK. – Nickolay

Cuestiones relacionadas