如何在包装 Firebug(或类似)控制台 api 时访问行号

2024-03-06

我封装了控制台 API 以提供精细的日志记录级别以及一些其他糖功能。

这工作正常,唯一的问题是 firebug(或任何其他控制台)将始终将日志来自的行号报告为调用控制台 API 本身的行。

您建议我如何让控制台记录我调用包装函数的行号?

我更喜欢跨浏览器解决方案,但如果失败的话,Firebug 插件可能是一个好的开始。

仅供参考,我这样称呼我的日志函数:

db.log(db.LogLevel.WARN, "Blah Blah Blah");

有趣的问题......我可能有一个破解给你。我现在无法测试这个,但我认为它可能有效。

我们知道常规函数调用不起作用,因此我开始考虑 C 中的 #defines 和各种其他语言中的宏。不幸的是,javascript 没有这个,但是也许是一个eval黑客会起作用。我期待着eval将运行代码,就像它来自同一行一样 - 如果不是,则忽略此答案的其余部分。

我的方法是这样的:

  1. 将 db.log 函数更改为指向eval(是的,呃)
  2. 不要将 LogLevel 作为参数传递,而是为每个 LogLevel 创建返回字符串的函数console.log其中和自定义消息。

它应该看起来像这样:

db = {LogLevel: {}};
db.log = eval;
db.LogLevel.warn = function(message) {
   return "console.log('THIS IS A WARNING: " + message + "');";
};

You should现在可以这样调用它:

db.log(db.LogLevel.warn("Blah blah blah"));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在包装 Firebug(或类似)控制台 api 时访问行号 的相关文章

随机推荐