Я использую console.log Firebug () для отладки моего веб-сайта. Если я пытаюсь просмотреть свой веб-сайт в браузерах без Firebug затем, я добираюсь, консоль не является определенной ошибкой. Существует ли способ корректно избежать этой ошибки?
Я нашел это потенциальное решение, но это кажется немного громоздким. И идеи?
Исходный код Firebug предоставляет файл для этого:
см. Firebugx.js
Не изобретате колесо каждый день :)
Я не думаю, что это будет намного лучше, чем обходной путь, с которым вы связываетесь. Конечно, можно расплавить его до простого определения console.log()
и оставить в покое, но в сущности, вы не обойдете такую конструкцию.
Единственная альтернатива, которая приходит на ум, это проверка console.log каждый раз, когда вы вызываете его, и это еще более громоздко.
Честно говоря, я бы воспользовался этим. Он охватывает не только метод console.log()
, но и каждый другой метод console
, и прилично короткое количество строк. Тот факт, что он впервые был использован в медиаплеере Yahoo, похоже, говорит о том, что он отлично работает и с кросс-браузером.
Этот бит кода - ваш лучший вариант, на самом деле он прилично элегантен и должен работать в большинстве случаев. До тех пор, пока вы будете комментировать над фрагментом именно то, для чего он нужен (чтобы не смущать будущих разработчиков), все должно быть в порядке.
Связанное решение в основном является вариантом (с несколькими дополнительными функциями) этого:
EDIT Нижеприведенный код на самом деле не работает при наличии firefox. Это научит размещать код без проверки только для того, чтобы показать мой не такой уж 1337 оператор ||
skillz:
window.console = window.console || {};
console.log = function(){};
Причина этого в том, что консоль firefox на самом деле является getter only свойством off window. Следовательно, мы не можем установить его. Вместо этого нужно использовать нечто подобное:
if (!window.console) {
window.console = {};
window.console.log = function(){};
}
Также, console.log
(и console.warning
, console.error
) будет работать в браузерах Webkit, включая мобильный Safari, довольно круто, да?
Мое окончательное решение:
if(!("console" in window))
window.console = {log: function() {}};
С верхней части головы:
if(!console)
{
console = {};
console.log = function() { };
}
Решение @OcuS, безусловно, лучшее, но вы можете улучшить его с помощью моего: Отметьте этот способ входа в консоль FF: Войдите в консоль ошибок Firefox из JavaScript
Затем добавьте в firebugx.js эти 3 строки внутри IF:
window.console['error'] = li
window.console['warn'] = li
window.console['debug'] = li
Таким образом, вы увидите журнал каждой ошибки консоли , предупреждения и отладки , даже если Firebug is closed
Я всегда создаю свои кроссбраузерные обертки для функций, похожих на console.log, и выглядит это примерно так:
function log(a){
try{
console.log(a);
}catch(er){
try{
window.opera.postError(a);
}catch(er){
//no console avaliable. put
//alert(a) here or write to a document node or just ignore
}
}
}
Это можно расширить для любых браузеров. в IE при отладке я бы рекомендовал поместить этот код jquery в последний catch:
$('body').append('<pre>'+JSON.serialize(a)+'</pre>');
Вы должны добавить JSON.serialize в ваш скрипт. IE не имеет его (IE8 может иметь, я не уверен)
Вы можете использовать этот код, чтобы проверить, существует ли объект консоли
if('console' in window && 'log' in window.console)
{
// code using console.log here
}
Или этот код
if(typeof window.console != 'undefined'
&& typeof window.console.log != 'undefined')
{
// code using console.log here
}
Также вы можете прочитать этот пост http://alexandershapovalov.com/firebug-console-is-not-defined-60/ Внутри поста ссылка, как создать оболочку jQuery для консоли