Войдите в Firefox Error Console из JavaScript
Можно ли добавлять сообщения во встроенную консоль ошибок Firefox из кода JavaScript, запущенного на веб-страницах?
Я знаю, что я там Firebug, который предоставляет объект console
и собственную консоль ошибок, но я искал быстрое исправление ранее и ничего не нашел.
Я предполагаю, что это может быть вообще невозможно, чтобы предотвратить вредоносное веб-страницы от рассылки журнала?
Ответы
Ответ 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 работает без ошибок при опрокидывании! Просто так!; ^)