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

Javascript, который обнаруживает Firebug?

Какой верный способ определить, включен ли Firebug?

4b9b3361

Ответ 1

Оригинальный ответ:

Проверьте объект console (созданный только с помощью Firebug), например:

if (window.console && window.console.firebug) {
  //Firebug is enabled
}

Обновление (январь 2012):

Разработчики Firebug решили удалить window.console.firebug. Вы все еще можете обнаружить присутствие Firebug утиная печать, например

if (window.console && (window.console.firebug || window.console.exception)) {
  //Firebug is enabled
}

или различные другие подходы, например

if (document.getUserData('firebug-Token')) ...
if (console.log.toString().indexOf('apply') != -1) ...
if (typeof console.assert(1) == 'string') ...

но в целом не должно быть необходимости на самом деле.

Ответ 2

Если firebug включен, window.console не будет undefined. console.firebug вернет номер версии.

Ответ 3

Как и Firebug версии 1.9.0, console.firebug больше не определяется из-за проблем с конфиденциальностью; см. примечания к выпуску, отчет об ошибках. Это нарушает вышеупомянутые методы. Действительно, он меняет ответ на вопрос Аллана на "нет пути"; если есть другой способ, он считается ошибкой.

Вместо этого решение должно проверить наличие console.log или то, что вы хотите использовать или заменить.

Вот предложение о замене кода, представленного Дэвидом Брокманом выше, но тем, который не удаляет какие-либо существующие функции.

(function () {
    var names = ['log', 'debug', 'info', 'warn', 'error', 'assert', 'dir', 'dirxml', 
                'group', 'groupEnd', 'time', 'timeEnd', 'count', 'trace', 'profile', 'profileEnd'];

    if (window.console) {
        for (var i = 0; i < names.length; i++) {
            if (!window.console[names[i]]) {
                window.console[names[i]] = function() {};
            }
        }
    } else {
        window.console = {};
        for (var i = 0; i < names.length; i++) {
            window.console[names[i]] = function() {};
        }
    }
})();

Ответ 4

Это невозможно обнаружить.

Firebug имеет несколько вкладок, которые могут быть отключены отдельно и по умолчанию не включены.

GMail, поскольку он может только указать, включена ли вкладка "console". Вероятнее всего, это потребует обхода безопасности, и вы не хотите туда идти.

Ответ 5

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

if (!window.console || !console.firebug) {
    (function (m, i) {
        window.console = {};
        while (i--) {
            window.console[m[i]] = function () {};
        }
    })('log debug info warn error assert dir dirxml trace group groupEnd time timeEnd profile profileEnd count'.split(' '), 16);
}

Ответ 6

Помните, что в Chrome window.console также возвращается значение true или [ Object console].

Кроме того, я бы установил, установлен ли Firebug с помощью

if (window.console.firebug !== undefined) // firebug is installed

Ниже я получаю в Safari и Chrome, ни один firebug не установлен.

if (window.console.firebug) // true
if (window.console.firebug == null) // true
if (window.console.firebug === null) // false

Операторы Is-True и Is-Not явно имеют тип принуждения, чего следует избегать в JavaScript.

Ответ 7

В настоящее время window.console.firebug удален последней версией firebug. потому что firebug - это отладчик JavaScript на основе расширения, который определяет некоторые новые функции или объекты в window.console. Поэтому в большинстве случаев вы можете использовать только эти новые определенные функции для обнаружения текущего состояния firebug.

таких как

if(console.assert(1) === '_firebugIgnore') alert("firebug is running!"); 
if((console.log+'''').indexOf('return Function.apply.call(x.log, x, arguments);') !== -1)  alert("firebug is running!");

Вы можете протестировать этот подход в каждом firebug.

С наилучшими пожеланиями!