我正在使用一个非常有限的Web平台,该平台使用了第三方Javascript库。在没有列出有关如何以及为何以其方式运行的多余细节的情况下,我很好奇是否有可能在出现特定的console.log条目之后做某事/任何事情(例如执行Javascript函数)。该系统已被严格锁定,但是我正在尝试改善该应用程序的整体用户体验。

此Javascript库中的典型控制台日志条目通常如下所示:

data access_token=XXXXXXXXXXXXXXXX&type_name=user&attributes=["uuid","displayName","email"]


谷歌搜索会产生大量无关的结果。我发现这涉及覆盖console.log方法,但这不是我想要的方法:How to get the console.log content as string in JavaScript

有任何想法吗?我假设您将当前内容转换为数组或字符串并解析结果。

最佳答案

您可以覆盖console.log() AND,并仍然将其记录在控制台上,以便既可以捕获输出,又可以保留日志记录。

这是一种方法:

var logEntries = [];

(function(oldLog) {

    console.log = function(arg) {
        // captures only first argument to console.log()
        // could be expanded to concatenate all entries
        logEntries.push(arg.toString());

        // now call original console.log() with original arguments
        return oldLog.apply(console, arguments);
    };
})(console.log);


因此,现在在任何给定时间,logEntries变量都是发送到console.log()的所有内容的累积数组。这是一个简单版本,不扩展对象或枚举数组。可以在该区域添加更多功能,但看来您只是在寻找特定的字符串。

例如,如果只想捕获包含"access_token"的内容,则还可以在添加到logEntries数组之前添加任何筛选。



如果您只想捕获包含"access_token="的行,则可以这样修改上面的代码:

var logEntries = [];

(function(oldLog) {

    console.log = function(arg) {
        if (typeof arg === "string" && arg.indexOf("access_token=") !== -1) {
            logEntries.push(arg);
        }

        // now call original console.log() with original arguments
        return oldLog.apply(console, arguments);
    };
})(console.log);

关于javascript - 在特定的console.log()条目之后是否可以执行Javascript函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36273144/

10-12 12:30
查看更多