改变firebugx.js以适应IE开发人员工具

时间:2011-02-04 17:47:00

标签: javascript internet-explorer firebug

firebugx.js文件(如下所示)检查!window.console和!console.firebug,它们正确检测是否安装了firebug。但是,该检查不适用于IE开发人员工具中的本机控制台对象 - 它会覆盖IE控制台对象。

例如,如果我包含firebugx.js代码,那么以下异常将不会出现在IE控制台中(它只会被吞下):

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

问题:适应IE开发人员调试器的最佳方法是什么?也许明显的答案是在IE中调试时简单地注释掉firebugx.js检查。还有其他方法吗?

参考:

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 个答案:

答案 0 :(得分:5)

我想对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 () { }
    }
  } 
}