Подтвердить что ты не робот

Войдите в Firefox Error Console из JavaScript

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

debug("foo!");

Ответ 3

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

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

Это простой хак, просто для удовольствия.

Ответ 4

window.console undefined в 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.

Ответ 5

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

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

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

Ответ 6

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

Ответ 7

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


// 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?
}

Ответ 8

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

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

Посмотрите под капот, и вы увидите, что я имею в виду под "дешевым".: -)

Объедините его с сериализаторами YUI или json.org JSON для сортировки репликации console.dir.

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

Ответ 9

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