Как распечатать отладочные сообщения в консоли Google Chrome JavaScript?
Как распечатать отладочные сообщения в консоли 9X_debugging Google Chrome JavaScript?
Обратите внимание, что 9X_google-chrome консоль JavaScript - это не то же самое, что 9X_debug отладчик JavaScript; у них другой синтаксис 9X_google-chrome AFAIK, поэтому команда print в отладчике JavaScript 9X_chrome здесь не работает. В консоли JavaScript 9X_js print()
отправит параметр на принтер.
Ответ #1
Ответ на вопрос: Как распечатать отладочные сообщения в консоли Google Chrome JavaScript?
Выполнение следующего кода из адресной строки 9X_debugger браузера:
javascript: console.log(2);
успешно выводит сообщение в «Консоль 9X_debug JavaScript» в Google Chrome.
- @Sebas `Console.Log` следует удалить из производственного кода перед развертыванием, потому что в противном случае эти сообщения будут запи ...
Ответ #2
Ответ на вопрос: Как распечатать отладочные сообщения в консоли Google Chrome JavaScript?
Развивая идею Андру, вы можете написать 9X_debugger сценарий, который создает консольные функции, если 9X_chrome они не существуют:
if (!window.console) console = {};
console.log = console.log || function(){};
console.warn = console.warn || function(){};
console.error = console.error || function(){};
console.info = console.info || function(){};
Затем используйте любое 9X_debugger из следующего:
console.log(...);
console.error(...);
console.info(...);
console.warn(...);
Эти функции будут регистрировать 9X_debugging различные типы элементов (которые могут 9X_debugger быть отфильтрованы на основе журнала, информации, ошибок 9X_js или предупреждений) и не будут вызывать 9X_debugging ошибок, когда консоль недоступна. Эти функции 9X_javascript-execution будут работать в консолях Firebug и Chrome.
- Просто будьте осторожны, потому что, если этот скрипт загружается со страницей, а окно консоли не открыто, он создаст «фиктивную» консоль, которая может помеша ...
Ответ #3
Ответ на вопрос: Как распечатать отладочные сообщения в консоли Google Chrome JavaScript?
Просто добавьте классную функцию, которую 9X_vanilla-javascript многие разработчики упускают:
console.log("this is %o, event is %o, host is %s", this, e, location.host);
Это волшебный 9X_debugging %o
дамп интерактивного и доступного содержимого объекта JavaScript. %s
был 9X_vanilla-javascript показан только для записи.
И это тоже круто:
console.log("%s", new Error().stack);
Что 9X_.js дает Java-подобную трассировку стека до 9X_chrome точки вызова new Error()
(включая путь к файлу и номер строки!).
И %o
, и new Error().stack
доступны 9X_debugging в Chrome и Firefox!
Также для трассировки 9X_debugging стека в Firefox используйте:
console.trace();
Как говорит 9X_vanilla-javascript https://developer.mozilla.org/en-US/docs/Web/API/console.
Удачного взлома!
ОБНОВЛЕНИЕ: некоторые библиотеки 9X_debug написаны плохими людьми, которые переопределяют 9X_debug объект console
для своих собственных целей. Чтобы 9X_javascript-execution восстановить исходный браузер console
после загрузки 9X_javascript-library библиотеки, используйте:
delete console.log;
delete console.warn;
....
См. вопрос о переполнении 9X_console стека Restoring console.log().
- Еще один, который я только что обнаружил: console.dir https://developer.mozilla.org/en ...
Ответ #4
Ответ на вопрос: Как распечатать отладочные сообщения в консоли Google Chrome JavaScript?
Простое предупреждение - если вы хотите 9X_debugger протестировать в Internet Explorer, не удаляя 9X_vanilla-javascript все console.log(), вам нужно использовать 9X_console Firebug Lite, иначе вы получите несколько не особо дружественных 9X_vanilla-javascript ошибок.
(Или создайте свой собственный console.log(), который 9X_vanillajs просто возвращает false.)
- Я избегаю кроссбраузерных ошибок, таких как: ...
Ответ #5
Ответ на вопрос: Как распечатать отладочные сообщения в консоли Google Chrome JavaScript?
Вот короткий скрипт, который проверяет, доступна 9X_chrome ли консоль. Если это не так, он пытается 9X_debugger загрузить Firebug, а если Firebug недоступен, он 9X_debugger загружает Firebug Lite. Теперь вы можете 9X_vanilla-javascript использовать console.log
в любом браузере. Наслаждайтесь!
if (!window['console']) {
// Enable console
if (window['loadFirebugConsole']) {
window.loadFirebugConsole();
}
else {
// No console, use Firebug Lite
var firebugLite = function(F, i, r, e, b, u, g, L, I, T, E) {
if (F.getElementById(b))
return;
E = F[i+'NS']&&F.documentElement.namespaceURI;
E = E ? F[i + 'NS'](E, 'script') : F[i]('script');
E[r]('id', b);
E[r]('src', I + g + T);
E[r](b, u);
(F[e]('head')[0] || F[e]('body')[0]).appendChild(E);
E = new Image;
E[r]('src', I + L);
};
firebugLite(
document, 'createElement', 'setAttribute', 'getElementsByTagName',
'FirebugLite', '4', 'firebug-lite.js',
'releases/lite/latest/skin/xp/sprite.png',
'https://getfirebug.com/', '#startOpened');
}
}
else {
// Console is already available, no action needed.
}
Ответ #6
Ответ на вопрос: Как распечатать отладочные сообщения в консоли Google Chrome JavaScript?
Помимо Delan Azabani's answer, мне нравится делиться своим console.js
, и 9X_vanilla-javascript я использую его для той же цели. Я создаю 9X_.js консоль noop, используя массив имен функций, что, на 9X_debug мой взгляд, очень удобный способ сделать 9X_debug это, и я позаботился об Internet Explorer, в 9X_vanillajs котором есть функция console.log
, но нет console.debug
:
// Create a noop console object if the browser doesn't provide one...
if (!window.console){
window.console = {};
}
// Internet Explorer has a console that has a 'log' function, but no 'debug'. To make console.debug work in Internet Explorer,
// We just map the function (extend for info, etc. if needed)
else {
if (!window.console.debug && typeof window.console.log !== 'undefined') {
window.console.debug = window.console.log;
}
}
// ... and create all functions we expect the console to have (taken from Firebug).
var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml",
"group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];
for (var i = 0; i < names.length; ++i){
if(!window.console[names[i]]){
window.console[names[i]] = function() {};
}
}
Ответ #7
Ответ на вопрос: Как распечатать отладочные сообщения в консоли Google Chrome JavaScript?
Или используйте эту функцию:
function log(message){
if (typeof console == "object") {
console.log(message);
}
}
9X_debugging
Ответ #8
Ответ на вопрос: Как распечатать отладочные сообщения в консоли Google Chrome JavaScript?
Вот мой класс-оболочка консоли. Кроме того, он 9X_vanillajs дает мне данные о прицеле, чтобы облегчить 9X_ecmascript жизнь. Обратите внимание на использование 9X_console localConsole.debug.call()
, чтобы localConsole.debug
работал в области действия вызывающего 9X_javascript-library класса, предоставляя доступ к его методу 9X_javascript-execution toString
.
localConsole = {
info: function(caller, msg, args) {
if ( window.console && window.console.info ) {
var params = [(this.className) ? this.className : this.toString() + '.' + caller + '(), ' + msg];
if (args) {
params = params.concat(args);
}
console.info.apply(console, params);
}
},
debug: function(caller, msg, args) {
if ( window.console && window.console.debug ) {
var params = [(this.className) ? this.className : this.toString() + '.' + caller + '(), ' + msg];
if (args) {
params = params.concat(args);
}
console.debug.apply(console, params);
}
}
};
someClass = {
toString: function(){
return 'In scope of someClass';
},
someFunc: function() {
myObj = {
dr: 'zeus',
cat: 'hat'
};
localConsole.debug.call(this, 'someFunc', 'myObj: ', myObj);
}
};
someClass.someFunc();
Это дает результат, такой как в Firebug:
In scope of someClass.someFunc(), myObj: Object { dr="zeus", more...}
Или Chrome:
In scope of someClass.someFunc(), obj:
Object
cat: "hat"
dr: "zeus"
__proto__: Object
Ответ #9
Ответ на вопрос: Как распечатать отладочные сообщения в консоли Google Chrome JavaScript?
Лично я использую это, похожее на tarek11011:
// Use a less-common namespace than just 'log'
function myLog(msg)
{
// Attempt to send a message to the console
try
{
console.log(msg);
}
// Fail gracefully if it does not exist
catch(e){}
}
Суть 9X_javascript в том, что неплохо иметь хотя бы некоторую 9X_vanilla-javascript практику ведения журнала, а не просто вставлять 9X_google-chrome console.log()
прямо в код JavaScript, потому что, если 9X_vanilla-javascript вы забудете об этом, и он находится на рабочем 9X_javascript сайте, он потенциально может сломать весь 9X_debug код JavaScript для этой страницы.
Ответ #10
Ответ на вопрос: Как распечатать отладочные сообщения в консоли Google Chrome JavaScript?
Вы можете использовать console.log()
, если у вас есть 9X_javascript отлаженный код в том редакторе программного 9X_chrome обеспечения, который у вас есть, и вы увидите 9X_vanilla-javascript результат, скорее всего, лучший редактор 9X_google-chrome для меня (Google Chrome). Просто нажмите 9X_debugging F12 и перейдите на вкладку «Консоль». Вы увидите 9X_.js результат. Удачного кодирования. :)
Ответ #11
Ответ на вопрос: Как распечатать отладочные сообщения в консоли Google Chrome JavaScript?
У меня было много проблем с разработчиками, которые 9X_js проверяли свои операторы console.(). И мне 9X_console очень не нравится отладка Internet Explorer, несмотря 9X_console на фантастические улучшения Internet Explorer 10 и Visual Studio 2012 и т. Д.
Итак, я 9X_vanillajs переопределил сам объект консоли ... Я добавил 9X_javascript флаг __localhost, который разрешает операторы 9X_debug консоли только на локальном хосте. Я также 9X_javascript-execution добавил в Internet Explorer функции console.() (Которые 9X_debug вместо этого отображают alert()).
// Console extensions...
(function() {
var __localhost = (document.location.host === "localhost"),
__allow_examine = true;
if (!console) {
console = {};
}
console.__log = console.log;
console.log = function() {
if (__localhost) {
if (typeof console !== "undefined" && typeof console.__log === "function") {
console.__log(arguments);
} else {
var i, msg = "";
for (i = 0; i < arguments.length; ++i) {
msg += arguments[i] + "\r\n";
}
alert(msg);
}
}
};
console.__info = console.info;
console.info = function() {
if (__localhost) {
if (typeof console !== "undefined" && typeof console.__info === "function") {
console.__info(arguments);
} else {
var i, msg = "";
for (i = 0; i < arguments.length; ++i) {
msg += arguments[i] + "\r\n";
}
alert(msg);
}
}
};
console.__warn = console.warn;
console.warn = function() {
if (__localhost) {
if (typeof console !== "undefined" && typeof console.__warn === "function") {
console.__warn(arguments);
} else {
var i, msg = "";
for (i = 0; i < arguments.length; ++i) {
msg += arguments[i] + "\r\n";
}
alert(msg);
}
}
};
console.__error = console.error;
console.error = function() {
if (__localhost) {
if (typeof console !== "undefined" && typeof console.__error === "function") {
console.__error(arguments);
} else {
var i, msg = "";
for (i = 0; i < arguments.length; ++i) {
msg += arguments[i] + "\r\n";
}
alert(msg);
}
}
};
console.__group = console.group;
console.group = function() {
if (__localhost) {
if (typeof console !== "undefined" && typeof console.__group === "function") {
console.__group(arguments);
} else {
var i, msg = "";
for (i = 0; i < arguments.length; ++i) {
msg += arguments[i] + "\r\n";
}
alert("group:\r\n" + msg + "{");
}
}
};
console.__groupEnd = console.groupEnd;
console.groupEnd = function() {
if (__localhost) {
if (typeof console !== "undefined" && typeof console.__groupEnd === "function") {
console.__groupEnd(arguments);
} else {
var i, msg = "";
for (i = 0; i < arguments.length; ++i) {
msg += arguments[i] + "\r\n";
}
alert(msg + "\r\n}");
}
}
};
///
/// Clever way to leave hundreds of debug output messages in the code,
/// but not see _everything_ when you only want to see _some_ of the
/// debugging messages.
///
///
/// To enable __examine_() statements for sections/groups of code, type the
/// following in your browser's console:
/// top.__examine_ABC = true;
/// This will enable only the console.examine("ABC", ... ) statements
/// in the code.
///
console.examine = function() {
if (!__allow_examine) {
return;
}
if (arguments.length > 0) {
var obj = top["__examine_" + arguments[0]];
if (obj && obj === true) {
console.log(arguments.splice(0, 1));
}
}
};
})();
Пример 9X_.js использования:
console.log("hello");
Chrome / Firefox:
prints hello in the console window.
Internet 9X_ecmascript Explorer:
displays an alert with 'hello'.
Для тех, кто внимательно изучит 9X_debugging код, вы откроете для себя функцию console.examine(). Я 9X_debug создал это много лет назад, чтобы оставить 9X_javascript-execution отладочный код в определенных областях продукта, чтобы 9X_chrome помочь в устранении неполадок QA / клиентов. Например, в 9X_vanilla-javascript выпущенном коде я бы оставил следующую строку:
function doSomething(arg1) {
// ...
console.examine("someLabel", arg1);
// ...
}
Затем 9X_vanillajs из выпущенного продукта введите в консоль 9X_google-chrome (или адресную строку с префиксом javascript:) следующее:
top.__examine_someLabel = true;
Затем 9X_debug я увижу все записанные в журнал операторы 9X_chrome console.examine(). Много раз это было фантастическим 9X_google-chrome подспорьем.
Ответ #12
Ответ на вопрос: Как распечатать отладочные сообщения в консоли Google Chrome JavaScript?
Простой Internet Explorer 7 и ниже shim, который сохраняет нумерацию 9X_ecmascript строк для других браузеров:
/* Console shim */
(function () {
var f = function () {};
if (!window.console) {
window.console = {
log:f, info:f, warn:f, debug:f, error:f
};
}
}());
Ответ #13
Ответ на вопрос: Как распечатать отладочные сообщения в консоли Google Chrome JavaScript?
console.debug("");
При использовании этого метода текст в консоли 9X_javascript выводится ярко-синим цветом.
Ответ #14
Ответ на вопрос: Как распечатать отладочные сообщения в консоли Google Chrome JavaScript?
Дальнейшее улучшение идей Делана и Андру 9X_vanillajs (поэтому этот ответ является отредактированной 9X_ecmascript версией); console.log, скорее всего, будет 9X_chrome существовать, в то время как другие функции 9X_debugger могут не существовать, поэтому используйте 9X_js карту по умолчанию для той же функции, что 9X_.js и console.log ....
Вы можете написать сценарий, который 9X_.js создает консольные функции, если они не 9X_js существуют:
if (!window.console) console = {};
console.log = console.log || function(){};
console.warn = console.warn || console.log; // defaults to log
console.error = console.error || console.log; // defaults to log
console.info = console.info || console.log; // defaults to log
Затем используйте любое из следующего:
console.log(...);
console.error(...);
console.info(...);
console.warn(...);
Эти 9X_chrome функции будут регистрировать различные типы 9X_javascript элементов (которые можно фильтровать на 9X_javascript-execution основе журнала, информации, ошибок или предупреждений) и 9X_console не будут вызывать ошибок, когда консоль 9X_debugger недоступна. Эти функции будут работать в 9X_javascript-library консолях Firebug и Chrome.
-
5
-
28
-
3
-
8
-
3
-
5
-
3
-
7
-
10
-
2
-
1
-
18
-
7
-
3
-
2
-
11
-
7
-
28
-
2
-
9
-
9
-
7
-
2
-
3
-
2
-
2
-
4
-
3
-
8
-
6
-
4
-
1
-
28
-
5
-
3
-
2
-
8
-
6
-
4
-
2
-
5
-
3
-
16
-
14
-
12
-
5
-
3
-
6
-
19
-
1