有一些浏览器,比如 IE7,没有定义一些控制台方法。如果您经常使用 console.debug、console.info 和其他在 IE7 和其他浏览器中可能不可用的方法,您可以通过在页面上运行任何其他 JavaScript 之前粘贴此代码来处理这种情况:
// override loggers to avoid throwing errors
if(window.console == null || window.console == undefined || !window.console) {
console = { log: function() {}, info: function() {}, warn: function() {}, error: function() {}, trace: function() {}, debug: function() {} };
var fbscript = document.createElement("script");
fbscript.src = "https://getfirebug.com/firebug-lite-beta.js";
fbscript.setAttribute("type","text/javascript");
document.getElementsByTagName("head")[0].appendChild(fbscript);
} else if(!console.debug) {
console.debug = function(text) { if(console.log) console.log("D: "+text); };
}
这首先检查 window.console 是否为 null 或未定义。如果是,那么它将console、console.log、console.info等定义为空函数。这可以防止它们在不支持它们的浏览器中导致错误,并且可以防止您在代码中存在错误或其他问题时不必要地删除原本非常有用的面包屑。
这样做的另一件事是在找不到控制台时输入 Firebug Lite。这在没有本机调试器的浏览器中非常有用。
控制台日志语句优于警报的优点是日志语句不会停止代码的执行。在测试同时触发多个事件的功能或调试代码时,在代码中包含警报可能会掩盖一些未知错误,这些错误可能是您在即将部署和删除警报时才发现的,或者更糟糕的是,它们没有得到直到代码投入生产后才被发现。
就观众而言,我不认识太多了解 Firebug 或 Chrome 调试器的非技术人员。因此,Web 开发人员似乎确实是这些功能的预期目标。这并不是说它们不能用于其他功能。例如,当我在线观看视频时,我使用 chrome 调试器来删除烦人的侧边栏广告。