2012-04-13 14 views
11

Il mio userscript stampa alcune informazioni utilizzando console.log().console.log non funziona se utilizzato in Firefox, script Greasemonkey

Questo funziona perfettamente in Chrome, ma quando installo questo userscript in Firefox (Greasemonkey), la console Web in Firefox non visualizza nulla.

Ho cercato una soluzione e alcuni hanno suggerito di utilizzare unsafeWindow ma non mostra alcun output. Inoltre, unsafeWindow non può essere utilizzato per il cromo. Ho persino installato Firebug ma era inutile. Come posso risolvere questo?

Per esempio, ho provato questo userscript in Firefox:

// ==UserScript== 
// @name  console 
// ==UserScript== 
console.log("hello"); 

risposta

16

Vuoi dire che non funziona se installato tramite Greasemonkey, giusto?
Non molto tempo fa, Greasemonkey broke console.log (Novità! Bug report). Ora, per vedere i risultati di una semplice chiamata console.log() da un Greasemonkey, è necessario cercare in la console di errore di Firefox, non Firebug.

potete vedere console errore di FF premendo: CtrlMaiuscJ.

Tuttavia, è possibile utilizzare unsafeWindow.console.log() sia in Chrome e script di Greasemonkey. Chrome ora ha un supporto limitato per unsafeWindow.

Se si utilizza unsafeWindow, è possibile accedere all'intero intervallo di Firebug's logging functions da Greasemonkey. (Firebug deve essere installato e che ancora potrebbe non funzionare in userscripts Chrome, non ho ancora testato in questo modo in un po '.)


In Firefox, se Firebug non è installato, oppure non è attivo per Nella pagina, quindi unsafeWindow.console.log() chiamate verranno visualizzate alla "console Web" Nuovo (Ctrl MaiuscK).
È necessario utilizzare unsafeWindow quando si trova all'interno di uno script Greasemonkey.

Nota che Firefox supporta attualmente console.log(), console.info(), console.warn() e console.error() nativamente - senza Firebug richiesto.

+0

funziona se uso 'unsafeWindow.console.log()' in firebug ma come ottengo l'output in webConsole. non c'è modo di ottenere l'output senza usare firebug. – user1275375

+0

Vedere la risposta aggiornata. –

+0

ho provato questo, ma nulla viene visualizzato nella console web – user1275375

5

Attendere un minuto: se la domanda riguarda l'accesso alla console con Greasemonkey (potrei giurare di aver visto il tag ), perché non utilizzare il metodo GM_log?

// ==UserScript== 
// @name   GM_log Example 
// @namespace  http://www.example.com/ 
// ==/UserScript== 

GM_log("This is an example of GM_log"); 

O mi manca qualcosa?

PS: puoi anche verificare javascript.options.showInConsole in about: config. dovrebbe essere true.

+1

Sì, puoi usare 'GM_log', ma non è portatile o unità testabile. Inoltre, fa schifo in confronto all'API 'console' - sia quella nativa ora supportata dalla maggior parte dei browser, sia l'API di console Firebug, extra-dolce. –

1

ho scoperto che (test con Chrome/Tampermonkey) quello che vi serve è:
window.log("<message goes here>"); non unsafeWindow.console.log("<msg>"); come unsafeWindow e console venire come indefinito. Prova questo, dato che sono abbastanza sicuro che è il modo in cui dovresti farlo nelle versioni successive dei browser, ecc.
Spero che questo sia stato d'aiuto!

Problemi correlati