如何查找邮件是否已打印到控制台

时间:2015-08-05 11:12:50

标签: javascript google-chrome firefox

假设我在浏览器中运行我的Javascript项目并且我在特定模块中,我可以检查是否已经消息打印到控制台?即从控制台读取消息......

例如我在我的js.file里面的函数里想检查是否已经在控制台中打印了hello world。

3 个答案:

答案 0 :(得分:1)

您可以随时为" console.logging"定义自己的功能。一条或多条消息(如果这是你正在做的事情),并在这个函数中有一个布尔值来处理这类事情。

我敢打赌它不是"最佳实践",但它会在一定程度上解决你的问题。

var messageSent = false;
    var myConsoleLog = function($strMessage){
        if (!messageSent) {
            console.log($strMessage);
            messageSent = true;
        } else {
            // Do whatever you feel like
        }
    };

当然,如果您需要检查更多案例,则需要更改该功能以实际跟踪更多消息。 :)

答案 1 :(得分:1)

jthanto的回答给了我一个主意。我不认为这是一种很好的做法,但如果必须,你可以定义自己的控制台类:

var MyConsole = function(oldConsole) {
    // store all messages ever logged
    this.log = [];
    // keep a pointer to oldConsole
    this.oldConsole = oldConsole;
}

MyConsole.prototype.log = function(args) {
    // push the message into log
    this.log.push(Array.prototype.join.call(args));
    // call oldConsole.log to actually display the message on the console
    if (this.oldConsole)
        this.oldConsole.log.apply(this.oldConsole, args);
}

// TODO: implement all other console methods in this fashion (apply for all console API methods)
MyConsole.prototype.<method> = function(args) {
    if (this.oldConsole)
        this.oldConsole.<method>.apply(this.oldConsole, args);
}

// method to check if something was printed
MyConsole.prototype.wasLogged(message) {
    return this.log.indexOf(message)!==-1;
}

// replace console with an instance of MyConsole, pointing to the old console
console = new MyConsole(console);

将其保存在文件中并先加载(位于代码顶部)

使用它像:

if (console.wasLogged("Hello World"))
    doStuffz();

希望它有所帮助。请注意,它没有经过测试,但应该给你一些指示:)

答案 2 :(得分:0)

通常无法完成。查看Chrome控制台的API: https://developer.chrome.com/devtools/docs/console-api

但是这个实验性的Chrome功能可以解决您的问题:https://developer.chrome.com/extensions/experimental_devtools_console

不幸的是,看起来其他浏览器没有这样的工具。