Обнаружить открытие и закрытие firebug - PullRequest
2 голосов
/ 19 сентября 2010

У кого-нибудь есть способ обнаружить открытие и закрытие Firebug.

Я знаю, что вы можете сделать следующее:

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

но это только обнаруживает консоль firebug при загрузке страницы. То, что я хочу сделать, это на странице, где firebug не открыт, обнаружить открытие консоли firebug.

Я попробовал следующее, но безуспешно

setInterval(function(){
  if(window.console && window.console.firebug){
    ...
  else
    ...
}, 1000);

Любая помощь с благодарностью.

Мэтт

Ответы [ 6 ]

2 голосов
/ 20 сентября 2010

Объект Firebug window.console создается непосредственно перед выполнением первого Javascript на странице, но только в том случае, если Firebug активен для страницы перед первым JS и если у пользователя включена панель консоли Firebug.

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

Мы должны удалить свойство консоли, если пользователь отключил Firebug для страницы. Я не знаю, действительно ли мы это делаем.

2 голосов
/ 20 сентября 2010

Просто .. Вы не можете.Окно firebug - это не просто пара элементов div на вашей странице.

1 голос
/ 23 мая 2012

console.table () возвращает "_firebugIgnore", если запущен firebug.

if( window.console && (console.firebug || 
   console.table && /firebug/i.test(console.table()) ))
{
    alert('Firebug is running');
}else{
    alert('Firebug is not found');
}
1 голос
/ 07 марта 2012

Firebug перезаписывает свойство console window, поэтому вы можете обнаружить его следующим образом:

var _console = window.console;
Object.defineProperty(window, 'console', {
    set: function (x) {
        if (x.exception) { // check if this is actually Firebug, and not the built-in console
            alert('Firebug on');
        }
        _console = x;
    },
    get: function () {
        return _console;
    }
});

Проблема в том, что этот объект остается, когда Firebug закрыт, поэтому вы не можете его обнаружить. Может быть, есть другой способ, но я не могу найти его в банкомате.

подробности: Невозможно получить доступ к контексту выполнения Firebug из сценариев документа, поэтому мы ограничены в ожидании, пока Firebug получит доступ к некоторым свойствам window, чего не происходит, когда вы закрываете Firebug. Вот некоторые из событий во время выключения, взятые с FBTrace :

Firebug stack trace

Я искал на трассировке стека «утечки» до window, но не смог их найти.

1 голос
/ 18 августа 2011

вы можете сделать это как

var t = setTimeout("CheckFireBug()",10000);
function CheckFireBug() {
    var t = setTimeout("CheckFireBug()",10000);
    if (window.console && window.console.firebug) {
        //Firebug is enabled
        console.debug('Firebug is enabled.');
    } else {
        //Firebug is not enabled
        console.debug('Firebug is not enabled.');
    }
}
0 голосов
/ 14 января 2015

Если вы хотите обнаружить только открытие / закрытие Firebug, вы можете проверить события изменения размера / размытия окна.

...