var Fb = {}; //An empty object literal for holding the function
Fb.log = function(obj, consoleMethod) {
if (window.console && window.console.firebug && window.console.firebug.replace(/^\s\s*/, '').replace(/\s\s*$/, '') !== '') {
if (typeof consoleMethod === "string" && typeof console[consoleMethod] === "function") {
console[consoleMethod](obj);
} else {
console.log(obj);
}
}
}
如果您在 JavaScript 代码中保留 console.log、console.info 等消息,并在 IE 等浏览器中打开页面,则可能会完全停止页面加载,并显示“console 未定义”错误,尤其是在用户使用非 IE8 浏览器时。
此代码片段将允许您保留代码中的日志记录消息(如果需要),并且页面将在 IE 或任何不支持控制台消息的浏览器中正常呈现。
用法
Fb.log("This will be logged");
Fb.log("This will be displayed in console as info", "info");
FB.log 函数接受两个参数,第一个参数是要在 Firebug 控制台中显示的“项目”,第二个参数是要用于日志记录的 Firebug 方法,例如 info、error 等。如果您省略第二个参数,则结果将等效于 console.log()
简单的只记录方式
function ltc(what) {
try {
console.log(what);
}
catch (e) {}
finally {
return;
}
}
ltc("message");
或者(在代码的顶部)您可以完全覆盖 console.log(),如果它不存在,则使用空函数。
这消除了每次调用时的条件评估,并使函数调用对其他应用程序保持一致。新加入项目的开发者会立即意识到 console.log() 的用途,不像 Fb.log() 那样可能造成混淆。
您好 Benjamin,
1. 您提到的方法如果有人只在 JS 中使用 console.log 会起作用。
编码人员可能会使用 Firebug 支持的所有日志记录函数,例如 info、error 等。
在这种情况下,这可能很困难。
2. 我使用了自定义对象字面量,仅仅是因为这是一个自定义函数,并且希望避免修改 Firebug 的 console 对象。
谢谢!
但是我错过了行号,所以我修改了它,并添加了行号,以及对
console.count
和console.time|timeEnd
的“支持”。要显示错误,您需要执行以下操作,其中 55 是您的文件行号。
一个简单的“info”将是这个
要计数(参考:http://bit.ly/d5QdJi),请编写以下内容
要计时事件,您只需要 2 个参数,一个唯一的数字/字符串和“time”和“timeEnd”这两个词。
因此,要停止此计时器,您需要使用
抱歉,我发表了多条评论,但我认为这可能有用……
如果您只想避免在 Firefox 中抛出错误,那么此方法应该可以正常工作
我想知道是否有更好的方法来处理这个问题,或者这段代码现在仍然有效吗?
window.console && console.log(“ 请参阅下方评论中的代码”);
有一种方法可以保持它很低,它使用 JavaScript 的功能来安全地包装 console.loggings
–> window.console && console.log(“ 这行代码不会让你失望!!!”);
小心:window.console.firebug 在 Firebug 1.9.0 中被删除(请参阅 https://getfirebug.com/wiki/index.php/Console_API#Note 和 http://code.google.com/p/fbug/issues/detail?id=4772)。
我最近创建了一个 console.log 脚本,它模拟了浏览器控制台。所以不需要 Firebug Lite。
https://github.com/mikewgd/console-log