web-dev-qa-db-de.com

Melden Sie sich von JavaScript aus bei Firefox Error Console an

Ist es möglich, der eingebauten Fehlerkonsole von Firefox Nachrichten hinzuzufügen, wenn JavaScript-Code auf Webseiten ausgeführt wird?

Ich weiß, dass es Firebug gibt, das ein console-Objekt und eine eigene Fehlerkonsole enthält, aber ich habe früher nach einer schnellen Lösung gesucht und konnte nichts finden.

Ich denke, es ist überhaupt nicht möglich, bösartige Webseiten daran zu hindern, das Protokoll zu spammen.

52
Torsten Marek

Sie können nicht direkt aus nicht vertrauenswürdigem JavaScript (z. B. von einer Seite kommende Skripts) in die Konsole schreiben. Auch wenn die Installation von Firebug Ihnen nicht zusagt, würde ich empfehlen, Firebug Lite auszuprobieren, da hierfür keine Installation im Browser erforderlich ist (oder sogar Firefox erfordert). Es ist ein Skript, das Sie in jede Webseite integrieren können (auch dynamisch), wodurch Sie einige grundlegende Firebug-Funktionen erhalten (z. B. console.log()).

32
Ben Blank

Wenn Sie eine globale Funktion definieren, die auf das Vorhandensein von window.console prüft, können Sie Firebug für die Ablaufverfolgung verwenden und Nice trotzdem mit anderen Browsern spielen und/oder wenn Sie die Ablaufverfolgung von Firebug deaktivieren:

debug = function (log_txt) {
    if (typeof window.console != 'undefined') {
        console.log(log_txt);
    }
}

debug("foo!");
46
petsounds

Ja, du kannst = P

function log(param){
    setTimeout(function(){
        throw new Error("Debug: " + param)
    },0)
}

//Simple Test:
alert(1)
log('This is my message to the error log -_-')
alert(2)
log('I can do this forever, does not break')
alert(3)

Update auf eine echte Funktion

Dies ist ein einfacher Hack, nur zum Spaß.

33
Fabiano Soriani

window.console ist in Firefox 4 beta 6 undefiniert, auch wenn Firebug 1.6X.0b1 aktiviert und geöffnet ist, wahrscheinlich aufgrund von Privilegienproblemen, über die andere diskutieren. Firefox 4 hat jedoch ein neues Tools> Web Console, und wenn dies geöffnet ist, haben Sie ein window.console -Objekt und nicht vertrauenswürdigen JavaScript-Code auf der Seite kann console.log () verwenden. Die Webkonsole ist in Bewegung (siehe https://wiki.mozilla.org/Firefox/Projects/Console ). Möglicherweise müssen Sie die Einstellungen devtools. * In about: config, YMMV ändern.

14
skierpage

Ich würde nur Firebug installieren und console.log verwenden. Wenn Sie das nicht tun können, können Sie immer einen Fehler werfen:

throw "foobar";
throw new Error("bazquux");

Natürlich werden Sie damit den Code, den Sie gerade ausführen, ausbrechen. Sie können ihn also nicht für detaillierte Protokollierungen verwenden. Wenn Sie dies umgehen können, denke ich, ist dies der einzige Weg, um etwas von der Box abzuloggen .

6
Brian Campbell

AFAIK ist nicht möglich. Wenn Sie jedoch daran interessiert sind, wie die Erweiterungen in Firefox mit der Fehlerkonsole interagieren, check this out .

3
Ólafur Waage

Diese Funktion erfordert keine Erweiterung oder Bibliothek. Es gewährt jedoch der betreffenden Website uneingeschränkte Berechtigungen. Keine Sorge, da Sie derjenige sind, der es entwickelt, richtig?


// Define mylog() function to log to Firefox' error console if such a
// thing exists
function defineMyLog()
{
    // Provide a useless but harmless fallback
    mylog = function(msg) { };
    // return; // disable in production

    if (typeof(netscape) === "undefined") {
        // alert("Logging implemented only for Firefox");
        return;
    }
    // The initial auth popup can be avoided by pre-setting some magic user_pref
    //  ( "capability.principal.codebase.p0.granted", "UniversalXPConnect"), etc.
    try {
        netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
    } catch (e) { // User has denied privileges
        // alert(e.name + ": " + e.message);
        return;
    }
    ffconsoleService = Components.classes["@mozilla.org/consoleservice;1"]
                                 .getService(Components.interfaces.nsIConsoleService);
    mylog = function (msg)
    {
        netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
        ffconsoleService.logStringMessage(new Date().toLocaleTimeString() + ": " + msg);
    }
    mylog("Firefox logging function has been defined");

    // window.open("javascript:"); // this URL does not work anymore?
}
2
MarcH

Wenn Sie interessiert sind, schauen Sie sich ein Skript an, das ich geschrieben habe - es ist ein "billiger" Firebug-Ersatz, der keine normalen Konsolen (wie Safari oder Chrome) stört, sondern es mit fast allen Firebug-Methoden erweitert:

http://code.google.com/p/glentilities/

Schauen Sie unter die Haube und Sie werden sehen, was ich mit "billig" meine. :-)

Kombinieren Sie es mit YUI oder den JSON-Serialisierern von json.org, um die replication console.dir zu sortieren. 

Firebug und Firebug Lite sind definitiv nettere GUIs, aber ich verwende mein selbstentwickeltes System ständig, um die Protokollierung selbst für Produktionscode sicher zu halten - ohne ständige Kommentare

1
pluckyglen

Ich hatte heute ein Problem, und ich habe festgestellt, dass die Konsole in Firebug verschiedene Registerkarten hat, und meine war in den Informationen zur Bestandsaufnahme, und Sie müssen die Option ALL auswählen, damit console.log funktioniert, ohne dass Fehler auftreten. So einfach ist das! ; ^)

0
Sergio Abreu