2014-05-15 11 views
11

Esiste un TamperMonkey equivalente al metodo GM_addStyle di GreaseMonkey per l'aggiunta di CSS?GM_addElemento equivalente in TamperMonkey

In GreaseMonkey, è possibile aggiungere un po 'di proprietà CSS a più elementi in questo modo:

GM_addStyle("body { color: white; background-color: black; } img { border: 0; }"); 

Per fare l'equivalente in TamperMonkey, Attualmente sto avendo a che fare la seguente:

function addGlobalStyle(css) { 
    var head, style; 
    head = document.getElementsByTagName('head')[0]; 
    if (!head) { return; } 
    style = document.createElement('style'); 
    style.type = 'text/css'; 
    style.innerHTML = css; 
    head.appendChild(style); 
} 

addGlobalStyle('body { color: white; background-color: black; }'); 

Questo funziona, ma esiste un equivalente GM_addStyle integrato per TamperMonkey che mi impedisce di doverlo ripetere su ogni script?

risposta

18

Secondo the TamperMonkey documentation, supporta direttamente GM_addStyle, come fa GreaseMonkey. Controlla il tuo includono regole/partita siano corrette, quindi aggiungere il codice demo alla parte superiore del vostro userscript:

GM_addStyle('* { font-size: 99px !important; }'); 
console.log('ran'); 

ho appena provato su un userscript fresca in Chrome 35 e ha funzionato come previsto. Se si dispone di altri @grant rule, sarà necessario aggiungerne uno per questa funzione, altrimenti dovrebbe essere rilevato e concesso automaticamente.

+0

Eh, non ho pensato di provare qualcosa di apparentemente improbabile genere .. con il suo 'prefisso GM_'. Dovrebbero lavorare su un PageRank migliore di quella documentazione .. attualmente invisibile su https://www.google.com/search?q=tampermonkey+gm_addstyle - Grazie! – arserbin3

+1

Questo non sembra funzionare, sto ricevendo 'ERRORE: l'esecuzione dello script è fallita! GM_addStyle non è definito 'messaggi nella console. – Husky

+3

@Husky ricorda che è necessario concedere la funzione come descritto nella risposta (non fare affidamento sul rilevamento automatico) e ovviamente qualsiasi codice inserito nel contesto della pagina non sarà in grado di accedere alle funzioni GM. Ho appena provato come sopra e la funzione sembra funzionare correttamente. – lpd

46

Se GM_addStyle(...) non funziona, controllare se si dispone di intestazione @grant GM_addStyle.

Ti piace questa:

// ==UserScript== 
// @name   Example 
// @description See usercript with grant header. 
// @grant   GM_addStyle 
// ==/UserScript== 

GM_addStyle("body { color: white; background-color: black; } img { border: 0; }"); 
2

Se qualcuno si interessavano, ho cambiato il codice in modo da non dover scrivere dopo ogni regola CSS "importante!". Ovviamente questo funziona solo se si usa la funzione al posto di GM_addStyle.

function addGlobalStyle(css) { 
    var head, style; 
    head = document.getElementsByTagName('head')[0]; 
    if (!head) { return; } 
    style = document.createElement('style'); 
    style.type = 'text/css'; 
    style.innerHTML = css.replace(/;/g, ' !important;'); 
    head.appendChild(style); 
} 

L'uscita di questo "addGlobalStyle('body { color: white; background-color: black; }');",

sarà "body { color: white !important; background-color: black !important; }');"