Изменение firebugx.js для размещения инструментов разработчика IE - PullRequest
7 голосов
/ 04 февраля 2011

Файл firebugx.js (показанный ниже) проверяет как! Window.console, так и! Console.firebug, который правильно определяет, установлен ли firebug.Однако эта проверка не учитывает собственный объект консоли в инструментах разработчика IE - она ​​перезаписывает объект консоли IE.

Например, если я включу код firebugx.js, то следующее исключение не появитсяв консоли IE (он просто проглотит):

  function foo() {
    try {
      throw "exception!!!";
    }
    catch (e) {
      console.error(e);
    }
  }

Вопрос: Каков наилучший подход для размещения отладчика разработчика IE?Возможно, очевидный ответ - просто закомментировать проверку firebugx.js при отладке в IE.Существуют ли другие подходы?

Ссылка:

firebugx.js

if (!window.console || !console.firebug)
{
    var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml",
    "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];

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

1 Ответ

5 голосов
/ 13 февраля 2011

Полагаю, что следующая модификация firebugx.js решит проблему. Я переопределяю window.console только в том случае, если он не существует, а затем опционально определяю отсутствующие функции в window.console. Я не решался изменить firebugx.js, но я не вижу в этом обратной стороны. Это самый простой способ быстро переключаться между отладчиками Firefox и IE.

firebugxCustom.js

if (!window.console) {
  window.console = {};
}
if (!window.console.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 () { }
    }
  } 
}
...