Вход в консоль ошибок Firefox из JavaScript - PullRequest
52 голосов
/ 24 апреля 2009

Можно ли добавлять сообщения во встроенную консоль ошибок Firefox из кода JavaScript, запущенного на веб-страницах?

Я знаю, что у меня есть Firebug, который предоставляет объект console и собственную консоль ошибок, но раньше я искал быстрое исправление и не смог ничего найти.

Я полагаю, что это вообще может быть невозможно, чтобы вредоносные веб-страницы не спамили журнал?

Ответы [ 9 ]

46 голосов
/ 09 марта 2010

Если вы определяете глобальную функцию, которая проверяет существование window.console, вы можете использовать Firebug для трассировки и по-прежнему хорошо играть с другими браузерами и / или если вы отключите трассировку консоли Firebug:

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

debug("foo!");
33 голосов
/ 13 января 2010

Да, вы можете = 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)

Обновление до реальной функции

Это простой взлом, просто для удовольствия.

32 голосов
/ 24 апреля 2009

Вы не можете писать в консоль напрямую из ненадежного JavaScript (например, скриптов, приходящих со страницы). Однако, даже если установка Firebug вам не подходит, я бы порекомендовал проверить Firebug Lite , который не требует установки в браузер (и даже не требует Firefox). Это скрипт, который вы можете включить в любую веб-страницу (даже динамически), которая даст вам некоторые базовые функциональные возможности Firebug (например, console.log()).

14 голосов
/ 19 сентября 2010

window.console не определена в Firefox 4 beta 6, даже если Firebug 1.6X.0b1 включен и открыт, возможно, из-за проблем с привилегиями, которые обсуждают другие. Тем не менее, Firefox 4 имеет новую утилиту> Веб-консоль, и если она открыта, у вас есть объект window.console и ненадежный код JavaScript на странице, который может использовать console.log (). Веб-консоль постоянно меняется (см. https://wiki.mozilla.org/Firefox/Projects/Console),. Возможно, вам потребуется изменить параметры с именем devtools. * About: config, YMMV.

6 голосов
/ 24 апреля 2009

Я бы просто установил Firebug и использовал console.log. Если вы не можете этого сделать, вы всегда можете выдать ошибку:

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

Конечно, это вырвет вас из кода, который вы выполняете в настоящее время, поэтому вы не можете использовать его для детальной регистрации, но если вы можете обойти это, я думаю, что это единственный способ выйти из системы. коробки.

3 голосов
/ 24 апреля 2009

AFAIK, это невозможно. Но если вам интересно, как расширения в Firefox взаимодействуют с консолью ошибок, проверьте это .

2 голосов
/ 15 апреля 2010

Эта функция не требует ни расширения, ни библиотеки. Однако он предоставляет полные привилегии соответствующему веб-сайту. Не беспокойтесь, ведь именно вы разрабатываете его, верно?


// 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?
}
1 голос
/ 24 апреля 2009

Если вам интересно, посмотрите сценарий, который я написал - это «дешевая» замена Firebug, которая не мешает нормальной консоли (например, Safari или Chrome), но расширяет ее почти всеми методами Firebug:

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

Загляните под капот, и вы поймете, что я имею в виду под "дешевым". : -)

Объедините его с сериализаторами JSON YUI или json.org, чтобы отсортировать реплику console.dir.

Firebug и Firebug Lite - безусловно, более приятные графические интерфейсы, но я постоянно использую свой собственный, чтобы безопасно сохранять логи даже для производственного кода - без постоянных комментариев и без комментариев,

0 голосов
/ 09 августа 2014

У меня была проблема сегодня, и я заметил, что Консоль в Firebug имеет разные вкладки, а моя была в Информации о Depuration, и вы должны выбрать опцию ALL, чтобы консоль работала без ошибок! Просто так! ; ^)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...